将实例化对象的方法 给新的对象用
class SharedKls:
def __setattr__(self, key, value):
if not hasattr(SharedKls, key):
if callable(value): # 是否可以调用
# 不加staticmethod,会默认传self
value = staticmethod(value)
setattr(SharedKls, key, value)
kls_a = SharedKls()
kls_b = SharedKls()
kls_a.attr_a = 1
def func(self, x):
return x * x
kls_a.method_a = lambda x: x * 3
assert kls_b.method_a(3) == 9
博客探讨了Python中如何通过`__setattr__`方法实现类属性的动态绑定,并展示了如何将方法绑定到类上,使得不同实例可以共享。通过一个实例`kls_a`和`kls_b`,演示了方法`method_a`的共享和调用,验证了不同实例间方法的等效性。

被折叠的 条评论
为什么被折叠?



