将属性从一个类对象传递到另一个类对象

时间:2021-06-07 03:18:33

标签: python class attributes

  • 我有两个类,每个类有两个方法。在第一个类的方法中,他们正在创建第二个类的实例,然后调用第二个类的方法。

  • 问题是在第二个类中,一个方法使用了同一个类中另一个方法返回的属性。一等方法调用二等方法时,不传递等效属性。

我的限制是我不能修改第一个类和第二个类的参数。这是代码的简化版本:

class One():
    def f1(self,x,y):
        self.model=(x+y)
        return self.model
    def f2(self,z):
        return self.model*z

class Two():
    def f1(self,x2,y2):
        temp=One()
        return temp.f1(x2,y2)
    def f2(self,z2):
        return temp.model*z2
    
object1=One()
object1.f1(2,3)
object1.f2(4)

object2=Two()
object2.f1(1,2)
object2.f2(9)

2 个答案:

答案 0 :(得分:0)

您似乎希望 Two 的每个实例在 One 上都有一个实例作为属性。尝试在构造函数 (__init__) 中实例化:

class Two():
    def __init__(self):
        self.one = One()
    def f1(self,x2,y2):
        return self.one.f1(x2,y2)
    def f2(self,z2):
        return self.one.model*z2

答案 1 :(得分:-1)

class One():
    def f1(self,x,y):
        self.model=(x+y)
        return self.model
    def f2(self,z):
        return self.model*z
    
temp=One()
class Two():
    global temp
    def f1(self,x2,y2):
        return temp.f1(x2,y2)
    def f2(self,z2):
        return temp.model*z2
    
object1=One()
print(object1.f1(2,3))
print(object1.f2(4))

object2=Two()
print(object2.f1(1,2))
print(object2.f2(9))

在类 temp 之外创建 Two() 变量。然后使用类 global 中的 Two() 关键字来访问它。现在最后打印所有结果。

相关问题