繁体   English   中英

访问类方法到实例方法的最佳方法

[英]Best way to access class-method into instance method

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)

我有两种方法来访问类方法到实例方法。

self.task(10)

要么

cls = self.__class__
cls.task(20)

我的问题是哪一个是最好的,为什么?

如果两种方式都不相同,那么我使用哪种方式?

self.task(10)绝对是最好的。

首先,两者最终将以类实例的相同操作结束:

类实例
...
特殊属性:__ dict__是属性字典; __class__是实例的类

  • 使用类实例对象调用classmethod实际上将对象的类传递给方法(参考:参考手册的相同章节):

...通过从类或实例中检索类方法对象来创建实例方法对象时,其__self__属性是类本身

但第一个更简单,不需要使用特殊属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM