程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何将类实例及其所做的一切传递给 Python 中的另一个类大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何将类实例及其所做的一切传递给 Python 中的另一个类?

开发过程中遇到如何将类实例及其所做的一切传递给 Python 中的另一个类的问题如何解决?下面主要结合日常开发的经验,给出你关于如何将类实例及其所做的一切传递给 Python 中的另一个类的解决方法建议,希望对你解决如何将类实例及其所做的一切传递给 Python 中的另一个类有所启发或帮助;

我正在编写一个文件结构如下的脚本:

    @H_187_5@main.py
  • fIEld_integration.py

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@ma​​in.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@ma​​in.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@ma​​in.py 重新创建代码的功能?我应该将它移动到与我实例化的类定义相同的文件中吗?我对类是个菜鸟,我听说过一些关于继承的东西,但我只是把头撞在墙上,因为我不明白这对我有什么帮助。

解决方法

由于您是 Integration 的子类,因此您可以使用 selfsuper() 调用该函数。 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 方法中所需的 p2derive 值。所以最好在方法调用之前在超类上调用 __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@ma​​in.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,请注明来意。