Python 将点语法与ClassName或self一起使用时的区别

Python 将点语法与ClassName或self一起使用时的区别,python,Python,访问类属性时,在该类方法中使用类名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 两者都有效。

访问类属性时,在该类方法中使用类名
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\u属性

一个比另一个更有效率吗

这只是个人对代码可读性的偏好吗?在我看来,看到该类中使用的
ClassName.class\u属性
看起来很奇怪

class Baz(Foo):
  class_attribute = "Hello, World!"

Baz().bar()
现在他们的行为完全不同了。计划是为了结果,而不是为了效率


现在他们的行为完全不同了。程序是为了结果,而不是为了效率。

该程序的可能副本包括能力,而该程序包括推理。不是复制品。可能的复制品包括能力,这一个包括推理。不是被愚弄的。所以继承时只有区别?如果不继承(单独考虑Foo类),除了个人偏好/代码可读性之外,还有什么区别吗?很好的例子,顺便说一句,我并没有想到继承的含义。所以只有继承时的区别?如果不继承(单独考虑Foo类),除了个人偏好/代码可读性之外,还有什么区别吗?很好的例子,顺便说一句,我没有想到继承的含义。