Python 什么';s访问类与#x27;通过类';名称vs类方法?

Python 什么';s访问类与#x27;通过类';名称vs类方法?,python,python-3.x,Python,Python 3.x,在一次采访中,我被问到以下两种访问类属性的方法有什么区别: class Klass: x = 10 @staticmethod def foo(): return Klass.x @classmethod def bar(cls): return cls.x PS:我知道classmethod和staticmethod之间的区别,使用cls也可以用于继承 class Klass2(Klass): x = 5 pr

在一次采访中,我被问到以下两种访问类属性的方法有什么区别:

class Klass:
    x = 10

    @staticmethod
    def foo():
        return Klass.x

    @classmethod
    def bar(cls):
        return cls.x

PS:我知道
classmethod
staticmethod

之间的区别,使用cls也可以用于继承

class Klass2(Klass):
  x = 5

print(Klass2().foo())
10
print(Klass2().bar())
5

尽管使用cls可能会有更多的差异,但它也适用于继承

class Klass2(Klass):
  x = 5

print(Klass2().foo())
10
print(Klass2().bar())
5

尽管可能存在更多差异

但这是否回答了您的问题?不)我不是问classmethod和staticmethod之间有什么区别)@Ivandive你在问什么<代码>以下两种访问类属性的方法之间有什么区别?这不是你的问题吗?只是一种预感:我想说,当你考虑到类继承时,它会产生影响。。。(第二种访问参数的方法可能允许您访问其他继承/父类的属性)这是否回答了您的问题?不)我不是问classmethod和staticmethod之间有什么区别)@Ivandive你在问什么<代码>以下两种访问类属性的方法之间有什么区别?这不是你的问题吗?只是一种预感:我想说,当你考虑到类继承时,它会产生影响。。。(第二种访问参数的方法可能允许您访问其他继承/父类的属性)正是这样)谢谢您
static-
classmethod
通常都是在类上调用的。因此,将
Klass2()
更改为
Klass2
这正是它)谢谢大家
static-
classmethod
通常都会在类中调用。因此,将
Klass2()
更改为
Klass2