所以我有一个班级,
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属性。
答案 0 :(得分:1)
实例属性和类'属性之间存在差异。
当您指定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