访问类属性时,在该类方法中使用类名Foo
或self
有什么区别?
>>> class Foo(object):
... class_attribute = "Oh Hai"
... def bar(self):
... print(Foo.class_attribute)
... print(self.class_attribute)
...
>>> Foo().bar()
Oh Hai
Oh Hai
两者都有效。在这两种情况下,我都假设Python查看了类的实例,并且没有找到绑定到它的类属性,因此它继续检查类属性并找到class_attribute
。
一个比另一个更有效吗?
这只是个人对代码可读性的偏好吗?我看到ClassName.class_attribute
在中使用了,这个类看起来很奇怪。
答案 0 :(得分:0)
class Baz(Foo):
class_attribute = "Hello, World!"
Baz().bar()
现在他们的行为完全不同了。结果计划,而非效率计划。