通过该类的方法调用该类的参数的参数

时间:2019-06-06 20:57:42

标签: python class

我有以下课程:

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

还是可以从实例中调用它?

基本上,我将收到一个我感兴趣的参数输入,该输入是一个函数,在该函数中,我想将其子参数之一用作输出表的方法。如果这不可能:

关于如何解决此问题的任何想法?

1 个答案:

答案 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()__,在特定情况下自定义其行为,否则将其正常运行。