通过直接访问实例

时间:2017-05-10 22:26:55

标签: python class call instance

我想知道如何“调用”类的实例,以便实例本身返回特定的值,属性或方法返回。
我试着通过一个例子来说清楚:

import numpy as np

class MyClass():
    def __init__(self, x):
        self.x = x
        self.y = self.x*2
        self.z = self.x*3


    def __call_instance__(self):
        return np.eye(2)*self.x


def some_function(x, y, z):
    return x, y, z


inst = MyClass(3)

some_function(x=inst, y=inst.y, z=inst.z)

Out[1]:
(array([[ 3.,  0.],
        [ 0.,  3.]]), 6, 9)

我知道我可以将__call__()定义为方法,并通过inst()调用实例。但有没有办法通过“调用”没有parantheses的实例来使用特定方法或某个属性的返回?换句话说,实例本身就像它自身的属性/属性一样? 我希望如果能说清楚我在寻找什么: - )

我期待着你的回答。 干杯,谢谢你。

马库斯

1 个答案:

答案 0 :(得分:0)

  

但是有没有办法通过"调用"来使用特定方法或某个属性的返回。没有括号的实例?

通过键入实例名称而不需要任何其他内容,您只需要实例(更确切地说,您要求的是绑定到实例的变量的值)。您可以调用各种方法 - 调用覆盖运算符,按__str__打印覆盖,按__call__调用。

但是,如果您为其中一个方法覆盖它的名称,您希望如何访问该实例?

>>> l = [1, 2, 3]
>>> l = l.pop
# How can you access the original list?