【发布时间】:2017-05-10 22:26:55
【问题描述】:
我想知道如何“调用”类的实例,以使实例本身返回特定的值、属性或方法返回。
我试着用一个例子来说明这一点:
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()调用实例。但是有没有办法通过只“调用”没有括号的实例来使用特定方法或某个属性的返回?换句话说,这样实例本身的行为就像它自己的一个属性/属性?
我希望如果可以明确我在寻找什么:-)
期待您的回答。 干杯,并提前感谢您。
马库斯
【问题讨论】:
-
不,你提议的内容极不可能被添加到语言中。
-
...只需“调用”不带括号的实例。这是没有意义的。添加括号时调用 is。
-
是的,我知道。我只是不知道如何表达它:-)
-
不,没有,而且听起来非常不明智。不要偷懒,只写愚蠢的括号。
标签: python class call instance