我正在处理一个未定义的大类。至少就我的代码而言,我想使该类的实例无法获得Python愿意允许的新属性。
如果我是该类的维护者,那么我可以轻松完成该任务(请参阅:How to avoid creating a class attribute by accident)。
现在,尽管我抱怨要将新事物注入到类中,但我还是想将答案中的逻辑注入到类(或我得到的实例)中。换句话说,是这样的:
object.__setattr__(a,'x',print("here is x."))
因此,该对象具有执行打印的方法'x()'(实际上,我想从我发布的答案中插入逻辑,因此我想从中修改 set_attr ()就像在外面一样,让我可以控制新属性的设置。)
有什么想法吗?
答案 0 :(得分:0)
要强制一个函数进入(至少是一个实例)Python类非常容易。这段代码:
class A:
def __init__(self, a, b):
self.a = a
self.b = b
def sum(self):
return self.a + self.b
a = A(2,3)
print(a.sum())
def zz(self):
return self.b - self.a
z = lambda : zz(a)
a.z = z
print(a.z())
按预期提供此输出:
$ python3 inject-function.py
5
1