我想知道如何“调用”类的实例,以便实例本身返回特定的值,属性或方法返回。
我试着通过一个例子来说清楚:
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的实例来使用特定方法或某个属性的返回?换句话说,实例本身就像它自身的属性/属性一样?
我希望如果能说清楚我在寻找什么: - )
我期待着你的回答。 干杯,谢谢你。
马库斯
答案 0 :(得分:0)
但是有没有办法通过"调用"来使用特定方法或某个属性的返回。没有括号的实例?
通过键入实例名称而不需要任何其他内容,您只需要实例(更确切地说,您要求的是绑定到实例的变量的值)。您可以调用各种方法 - 调用覆盖运算符,按__str__
打印覆盖,按__call__
调用。
但是,如果您为其中一个方法覆盖它的名称,您希望如何访问该实例?
>>> l = [1, 2, 3]
>>> l = l.pop
# How can you access the original list?