如何在一个类中实例化多个类:Python OOP



我用3个不同的类编写了一段代码-这些类初始化函数并相互连接(类B从a类调用函数a_calc((;类C从b类调用函数b_calc(((。我想创建Calculator((函数,它实例化所有这些类(A、B、C(,在一行代码中使用类函数,并返回执行结果(以便能够执行只创建一个对象Main的程序(。这里的代码片段(简化(:

class A(object):
def __init__(self):
self.a = 10
def a_calc(self):
a = self.a + 1
return a
class B(object):
def __init__(self, A):
self.A = A
def b_calc(self):
b = self.A.a_calc() + 2
return b
class C(object):
def __init__(self, B):
self.B = B
def c_calc(self):
c = self.B().b_calc + 3
return c
class Calculator(A, B, C):
def __init__(self):
result = A.a_calc() + B.b_calc() + C.c_calc()
print(result)

calc = Calculator()

然而,我得到了一个错误:

Traceback (most recent call last):
File "/home/taras/PycharmProjects/ResSysPymage/test#2.py", line 31, in <module>
calc = Calculator()
File "/home/taras/PycharmProjects/ResSysPymage/test#2.py", line 27, in __init__
result = A.a_calc() + B.b_calc() + C.c_calc()
TypeError: a_calc() missing 1 required positional argument: 'self'

我怎样才能实现我的想法?我很感激你的想法:(

您似乎混淆了类、类实例和组合与多重继承。

也许你正在寻找这样的东西:

class A:
def __init__(self):
self.a = 10
def a_calc(self):
a = self.a + 1
return a
class B:
def __init__(self, a: A):
self.a = a
def b_calc(self):
b = self.a.a_calc() + 2
return b
class C:
def __init__(self, b: B):
self.b = b
def c_calc(self):
c = self.b.b_calc() + 3
return c
def calculator():
a = A()
b = B(a)
c = C(b)
return a.a_calc() + b.b_calc() + c.c_calc()
print(calculator())

最新更新