python - 通过该类的方法调用该类的参数的参数
问题描述
我有以下课程:
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
或者这只是可能从一个实例中调用?
基本上,我将收到一个输入,其中一个我感兴趣的参数是一个函数,我想将它的一个子参数用于输出表格的方法。如果这是不可能的:
关于如何克服这个问题的任何想法?
解决方案
是的。这就是类的工作方式,事实上,这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()__
,在您的特定情况下自定义其行为,并让它在其他情况下正常运行。
推荐阅读
- angular - 如何覆盖 Angular 组件实现的单个元素(特别是 CdkStepper)?
- reactjs - 使用身份验证的 Office UI Outlook 插件不稳定
- html - 结合两个 RewriteRules 覆盖第一个
- graph - Weaviate 搜索图与。IBM Graph 的 GA
- python - 有什么方法可以放大 matplotlib 图而不用 Python 中的所有数据点相乘?
- c# - 在 Web Api Controller 中返回后获取状态码
- c# - 将 XML 元素名称和 XML 属性设置为类属性
- flutter - 颤动如何在单击时更改按钮的颜色
- r - R:可以从每个句子(行)中提取词组吗?并创建数据框(或矩阵)?
- r - R中的“分组”因子观察