【发布时间】:2020-11-23 12:34:21
【问题描述】:
我编写了一个包含 3 个不同类的代码 - 这些类初始化函数并相互连接(B 类从 A 类调用函数 a_calc();C 类从 B 类调用函数 b_calc())。我想创建 Calculator() 函数来实例化所有这些类(A、B、C),在一行代码中使用类函数,并返回执行结果(以便能够执行只创建一个对象 Main 的程序)。这里是sn-p的代码(简体):
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'
我怎样才能让我的想法成真?我会很感激你的想法:)
【问题讨论】:
-
您的错误行试图将 calc 方法作为类方法调用,而不是作为它的成员方法(成员方法被传递给类的实例以在 self 参数中处理)您下面的答案似乎更符合您的要求。
标签: python class oop object self