Calling a base class's classmethod in Python

后端 未结 4 1876
独厮守ぢ
独厮守ぢ 2020-12-12 23:20

Consider the following code:

class Base(object):

    @classmethod
    def do(cls, a):
        print cls, a

class Derived(Base):

    @classmethod
    def d         


        
4条回答
  •  情话喂你
    2020-12-12 23:56

    this has been a while, but I think I may have found an answer. When you decorate a method to become a classmethod the original unbound method is stored in a property named 'im_func':

    class Base(object):
        @classmethod
        def do(cls, a):
            print cls, a
    
    class Derived(Base):
    
        @classmethod
        def do(cls, a):
            print 'In derived!'
            # Base.do(cls, a) -- can't pass `cls`
            Base.do.im_func(cls, a)
    
    if __name__ == '__main__':
        d = Derived()
        d.do('hello')
    

提交回复
热议问题