【发布时间】:2021-07-28 14:06:39
【问题描述】:
这是我的代码:
class MyInp(int):
pass
def add_bar(cls, input_type):
def bar(self, inp :input_type):
print(f"bar: {inp}")
setattr(cls, 'bar', bar)
return cls
@add_bar(input_type=MyInp)
class Foo():
pass
f = Foo()
f.bar(3)
运行返回:
TypeError: add_bar() 缺少 1 个必需的位置参数:'cls'
我知道我可以在类定义 (add_bar(Foo, MyInp)) 之后调用 add_bar,它会起作用
但是我如何添加一个需要多个参数的方法而不需要指定尚未定义的类?
还是我可以做一些别的事情,比如注册 input_type 并在定义类时以某种神奇的方式推断它的 input_type 并声明方法?
【问题讨论】:
标签: python python-3.x python-decorators