我应该如何在Python中引用类变量?

bmc*_*148 6 python variables class

在Python中,我可以使用类中的一个ClassName.class_varself.class_var来自类中引用类级变量.现在,只要我不通过创建一个同名的实例变量来覆盖对象中的类级别变量名称(我发现它会很傻),它们总是会引用相同的东西.

我的问题是,这是一种更好的做法?还是比较常见?

我用任何一种方式看到编码书籍和源代码本身.在某些情况下,我看到它们使用BOTH方法来引用同一个类中的变量,我认为它实际上是不一致的.

这里我举一个例子:

class Foo(object) :
    class_var = ['same','for','all']
    def __init__(self, instance_var) :
        self.instance_var = instance_var
    def print_words(self) :
        # here I could use self.class_var
        for w in Foo.class_var :
            print w
Run Code Online (Sandbox Code Playgroud)

Jas*_*n S 6

如果只有一个类,并且只读取变量,则不会有太大区别。

如果考虑到覆盖子类的可能性class_varself.class_var则将首先查找当前类,同时Foo.class_var继续具体引用该特定值。最佳实践取决于您的意图,但是由于使用一种使类成为可选语言的类表示对多态性的至少某种兴趣,self因此可能更有用。

另外,如果要设置该值,self.whatever =将设置一个实例变量并Foo.whatever =设置类变量,这也会影响其他实例。