我有以下课程:
class xyq(object):
def __init__(self,param1,param2):
self.param1=param1
self.param2=param2
考虑xyq的实例为:
instance1=xyq(param1=110, param2=func1(x=10,y=20))
在class xyq
内是否可以有一个引用param2内的参数的方法?
如:
method1(self):
return self.param2.x
还是可以从实例中调用它?
基本上,我将收到一个我感兴趣的参数输入,该输入是一个函数,在该函数中,我想将其子参数之一用作输出表的方法。如果这不可能:
关于如何解决此问题的任何想法?
答案 0 :(得分:0)
是的。类就是这样工作的,实际上,这就是self
是实例方法的参数的全部原因。
事实上,当您这样做
instance1 = xyq(param1=110, param2=func1(x=10,y=10))
您不是直接设置这些值。而是线条
self.param1 = param1
self.param2 = param2
xyq.__init__()
中的正在设置这些值。您可以xyq(110, func1(x=10,y=10)
来获得完全相同的效果。
稍后,如果您不在课堂上,可以执行instance1.param2.x
,也可以执行instance1.method1()
,他们将返回相同的内容。实际上,当您这样做
self.param2.x
在method1()
中,实际上是指与在方法之外执行instance1.param2.x
时相同的对象。也就是说,在实例上调用方法时,实例本身会自动作为self
参数传递,您可以相应地使用它。
如果您想以更直接的方式从实例外部引用instance1.param2.x
,则可以修改__init__()
以将其设置为另一个参数:
self.param3 = self.param2.x
但是执行此操作的另一种方法是override __getattribute()__
,在特定情况下自定义其行为,否则将其正常运行。