使用类方法访问类中的类变量

KocT9H

我有一个关于从类访问类变量的问题。哪种方式是首选?为什么版本 1 有效?name 不是实例变量,如何使用 .self 访问它?

版本 1:

class Base:
    def get_name(self): return self.name

class Child_1(Base):
    name = 'Child 1 name'

child = Child_1()
print(child.get_name())

版本 2:

class Base:
    @classmethod
    def get_name(cls): return cls.name

class Child_1(Base):
    name = 'Child 1 name'

child = Child_1()
print(child.get_name())

这背后的动机是为所有实例定义一次名称以节省空间。

乔兰·比斯利

self.name 默认是指 cls.name

如果你设置它,它只会为那个实例设置它但是

self.name = "bob"

现在覆盖类级别名称

方法也一样

class Foo:
    @staticmethod
    def hello():
        print("Hi There From Foo!")
    def __init__(self):
        self.hello() #this works

 Foo.hello() # this also works
 Foo() # print from in the init

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章