您可以从外部“强制”方法进入类吗?

时间:2018-12-29 21:07:30

标签: python-3.x

我正在处理一个未定义的大类。至少就我的代码而言,我想使该类的实例无法获得Python愿意允许的新属性。

如果我是该类的维护者,那么我可以轻松完成该任务(请参阅:How to avoid creating a class attribute by accident)。

现在,尽管我抱怨要将新事物注入到类中,但我还是想将答案中的逻辑注入到类(或我得到的实例)中。换句话说,是这样的:

object.__setattr__(a,'x',print("here is x."))

因此,该对象具有执行打印的方法'x()'(实际上,我想从我发布的答案中插入逻辑,因此我想从中修改 set_attr ()就像在外面一样,让我可以控制新属性的设置。)

有什么想法吗?

1 个答案:

答案 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