Kal*_*llz 4 python class-method python-2.7 python-3.x
class Test(object):
def __init__(self):
pass
def testmethod(self):
# instance method
self.task(10) # type-1 access class method
cls = self.__class__
cls.task(20) # type-2 access class method
@classmethod
def task(cls,val)
print(val)
Run Code Online (Sandbox Code Playgroud)
我有两种方法可以将类方法访问实例方法。
self.task(10)
Run Code Online (Sandbox Code Playgroud)
要么
cls = self.__class__
cls.task(20)
Run Code Online (Sandbox Code Playgroud)
我的问题是哪一个最好,为什么?
如果两种方法都不相同,那么我在哪种条件下使用哪种方法?
self.task(10) 绝对是最好的。
首先,对于类实例,两者最终都将以相同的操作结束:
类实例
...
特殊属性:__dict__是属性字典;__class__是实例的类
...当通过从类或实例中检索类方法对象创建实例方法对象时,其__self__属性是类本身
但是第一个比较简单,不需要使用特殊属性。