繁体   English   中英

在课外设置属性

[英]setting attributes outside of class

所以我有课

class Interval:  
    def __init__(self, min, max):
        self.min = min 
        self.max = max
        self.compare_mode = None 

    def min_max(min, max = None)-> 'Interval Object':
        '''Code to return properly initialized Interval Object
        '''
        ...
        return Interval(min, max)

这只是我课堂上提问的主要部分。 在这里,我有两个正确初始化的Interval对象

l = Interval.min_max(1.0,5.0)
r = Interval.min_max(4.0,6.0)

现在,我试图通过使用以下代码仅将某些字符串绑定到类来更新类的self.compare_mode属性:

Interval.compare_mode = 'liberal'

现在,当我使用print(Interval.compare_mode)从类外部打印出值时,它看起来像是有界的,但是当我尝试从我的Interval类中的其他方法访问此字符串时,它仍然初始化为None。 我只是想在启动此代码的任何时候使用Interval.compare_mode = 'some string'创建Interval对象后更新类的compare_mode属性。

实例属性和类的属性之间存在区别。

分配给self.compare_mode ,是指实例属性;分配Interval.compare_mode ,是指类属性。

但是,在阅读时,它首先尝试为您提供实例属性,然后如果失败,您将获得class属性。

试试这个修改:

class Interval:
    compare_mode = None # Class attribute

    def __init__(self, min, max):
        self.min = min 
        self.max = max
        # NOT setting self.compare_mode here

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM