开发者社区> 问答> 正文

python中的动态方法绑定

我有以下两个类A和B.如何让do_someting()方法调用B中的overriden方法some_method()。这在Python中是否可行?

class A:

@staticmethod
def some_method()
    # pass
    return

@classmethod
def do_something():
    A.some_method()
    ...
    return

class B(A):

@staticmethod
def some_method()
    # how does do_something call here?
    return

@classmethod
def run()
    B.do_something()
    return

展开
收起
一码平川MACHEL 2019-01-18 10:41:23 1684 0
2 条回答
写回答
取消 提交回答
  • 主要是对cls,和self的运用。

    cls类本身。

    self类实例。

    还有静态 方法和类方法不需要实例化。

    2019-11-19 18:27:05
    赞同 展开评论 打赏
  • 只需要确保你的冒号进入self并且cls:

    class A:

    @staticmethod
    def some_method():
        # pass
        return
    
    @classmethod
    def do_something(cls):
        cls.some_method()
        return
    

    class B(A):

    @staticmethod
    def some_method():
        print("I did stuff!")
        return
    
    @classmethod
    def run(cls):
        B.do_something()
        return
    

    k = B()
    k.run()

    2019-07-17 23:25:51
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载