访问类中类属性的pythonic方法

Ofe*_*.T. 2 python reference class-attribute

我想知道你怎么认为从类中的函数访问类属性的方法.我没有在PEP8中找到一个参考或一个关于它的流行问题.例如

class MyClass(object):
    BAR = 1
    def foo(self):
        # Way A:
        print(self.BAR)

        # Way B:
        print(MyClass.BAR)
Run Code Online (Sandbox Code Playgroud)

通过'self'访问似乎是合理的,因为属性由同一个类拥有,对于明显的同类引用具有近似引用.另一方面,通过类名称本身的访问是清楚的,因为它是静态的并且使得使用的起源清晰,并且因为它与类的名称配对而更加清晰.

Che*_* A. 6

明确地命名的类名,可以防止从子类覆盖你的属性.

另一方面,使用self可以提供这种灵活性.请考虑以下代码:

class MyClass(object):
    BAR = 1
    def foo(self):
        # Way A:
        print(self.BAR)

        # Way B:
        print(MyClass.BAR)


class SubClass(MyClass):
    BAR = 2

class SubClass2(MyClass):
    pass

# output
>>> a = SubClass()
>>> a.foo()
2
1
>>> b = SubClass2()
>>> b.foo()
1
1
Run Code Online (Sandbox Code Playgroud)