gpt4 book ai didi

python - python中的动态方法绑定(bind)

转载 作者:行者123 更新时间:2023-12-01 08:26:29 24 4
gpt4 key购买 nike

我有以下两个类 A 和 B。如何使 do_someting() 方法调用 B 中的重写方法 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

最佳答案

这非常简单,只需确保修复 selfcls 中的冒号传递即可:

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()
>>>"I did stuff!"

如果您想从 B 类调用旧的 do_something (A 类中的那个),只需传入适当的类即可。 B 类:

@classmethod
def run(cls):
A.do_something()
return

关于python - python中的动态方法绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54210347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com