【发布时间】:2021-09-09 15:16:02
【问题描述】:
class A:
@classmethod
def a(x):
print('a')
@staticmethod
def b():
print('b')
def c():
print('c')
def d(self): #instance method
print(self)
A.a() # calling using class
A.b() # calling using class
A().b() # calling using instance
A.c() # calling using class
A().d() # calling using the object
A().c() # calling using instance but returning error
我创建了一个简单的类和不同的方法,这里方法 c( ) 的类型是什么?它不是静态的,就好像它是静态方法一样,它也可以被实例调用,但在这种情况下它会返回错误,它也不是类方法,就好像它是,我们应该在定义函数,那么这里的方法c()是什么类型的呢?
【问题讨论】:
-
在我看来,@staticmethod 装饰器更多的是为了可读性而不是功能。无论有没有装饰器,该方法都应该按预期工作。但是,最好的做法是确保添加装饰器。
-
没有兄弟,装饰器不仅仅是为了可读性,它还指定了方法类型,因此函数按指定工作,我试验了几个案例,可以确认这一点。谢谢你的意见顺便说一句,有一个美好的一天。
标签: python-3.x oop