[英]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.