繁体   English   中英

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

[英]How to instantiate multiple classes in one class: 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())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM