首页 > 解决方案 > 通过该类的方法调用该类的参数的参数

问题描述

我有以下课程:

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

或者这只是可能从一个实例中调用?

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

关于如何克服这个问题的任何想法?

标签: pythonclass

解决方案


是的。这就是类的工作方式,事实上,这self就是实例方法的参数的全部原因。

事实上,当你这样做时

instance1 = xyq(param1=110, param2=func1(x=10,y=10))

您不是直接设置这些值。而是线条

self.param1 = param1
self.param2 = param2

inxyq.__init__()正在设置这些值。你可以做到xyq(110, func1(x=10,y=10)完全相同的效果。

instance1.param2.x稍后,如果你不在课堂上,你可以这样做,或者instance1.method1(),他们会返回同样的东西。事实上,当你这样做时

self.param2.x

in method1(),您实际上指的是与instance1.param2.x在方法之外执行操作时相同的对象。也就是说,当您在实例上调用方法时,实例本身会自动作为self参数传递,您可以相应地使用它。


如果您想有一种更直接的方式instance1.param2.x从实例外部引用,您可以修改__init__()以将其设置为另一个参数:

self.param3 = self.param2.x

但是另一种做这样的事情的方法是覆盖__getattribute()__,在您的特定情况下自定义其行为,并让它在其他情况下正常运行。


推荐阅读