大佬教程收集整理的这篇文章主要介绍了如何将类实例及其所做的一切传递给 Python 中的另一个类,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一个文件结构如下的脚本:
fIEld_integration.py:
import numpy as np
class Integration():
def __init__(self,param1,param2):
self.p1 = param1
self.p2 = param2
self.derive(self.p2)
def derive(self,param2):
self.pp1 = 2/self.p1
self.pp2 = param2/3
self.another_function_insIDe_the_class()
def another_function_insIDe_the_class(self):
print('OK')
@H_407_11@main.py:
from fIEld_int import Integration
from fitTing import autofit
ppp1 = 1
ppp2 = 2
profile = Integration(ppp1,ppp2)
ppp5 = 3
fitt = autofit(ppp5)
y_pre_fitted = fitt.pre_fitTing(profile.p2,0)
fitTing.py:
from fIEld_int import Integration
class autofit(Integration):
def __init__(self,param5):
self.p5 = param5
def pre_fitTing(self,param2,param3):
Integration.derive(param2)
print(param3)
虽然 fitTing.py pre_fitTing
方法直接在 @H_407_11@main.py 中运行良好,但在这里它抛出 TypeError: line 8,in pre_fitTing
Integration.derive(param2)
类型错误:derive() 缺少 1 个必需的位置参数:'param2'。
如果我将行更改为 Integration.derive(self,param2)
,它会抛出 AttributeError: 'autofit' object has no attribute 'p1'
那我如何从另一个文件中的 @H_407_11@main.py 重新创建代码的功能?我应该将它移动到与我实例化的类定义相同的文件中吗?我对类是个菜鸟,我听说过一些关于继承的东西,但我只是把头撞在墙上,因为我不明白这对我有什么帮助。
由于您是 Integration
的子类,因此您可以使用 self
或 super()
调用该函数。 super()
可以在子类也覆盖超类的方法时使用,我们需要调用超类方法而不是子类。但在您的情况下,您并没有覆盖,所以一个简单的 self
调用就足够了,所以 -
from field_int import Integration
class Autofit(Integration):
def __init__(self,param5):
self.p5 = param5
def pre_fitTing(self,param2,param3):
self.derive(param2)
print(param3)
另一方面,使用 super()
初始化超类通常是一个好主意,例如 -
from field_int import Integration
class Autofit(Integration):
def __init__(self,param1,param5):
super().__init__(param1,param2)
self.p5 = param5
def pre_fitTing(self,param3):
self.derive(param2)
print(param3)
因为现在如果您在没有 derive
的情况下调用 super().__init__
方法,将不会定义 p1
方法中所需的 p2
和 derive
值。所以最好在方法调用之前在超类上调用 __init__
。
在不使用继承的情况下实现目标的另一种方法(如果您不扩展 Integration
类的功能)-
fit.py
from field_int import Integration
class Autofit():
def __init__(self,integration: Integration,param5):
self.p5 = param5
self.integration = integration
def pre_fitTing(self,param3):
self.integration.derive(param2)
print(param3)
@H_407_11@main.py
from field_int import Integration
from fitTing import Autofit
ppp1 = 1
ppp2 = 2
profile = Integration(ppp1,ppp2)
ppp5 = 3
fitt = Autofit(profile,ppp5)
y_pre_fitted = fitt.pre_fitTing(profile.p2,0)
以上是大佬教程为你收集整理的如何将类实例及其所做的一切传递给 Python 中的另一个类全部内容,希望文章能够帮你解决如何将类实例及其所做的一切传递给 Python 中的另一个类所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。