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