如何通过Python构造函数实现依赖注入

2024-05-23 16:07:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Python重写了一个C#依赖倒置示例。我创建了一个名为CalculatorOperation的接口,并试图通过Calculator构造函数实现依赖项注入。问题是当我运行代码时,它返回None。如果我将self.calc_op = CalculatorOperation()更改为self.calc_op = Addition(),它将返回正确的值15

class CalculatorOperation():
    def calculate(self, num_1, num_2):
        pass


class Calculator:
    def __init__(self, calc_op):
        self.calc_op = CalculatorOperation()

    def solve(self, num_1, num_2):
        return self.calc_op.calculate(num_1, num_2)


class Addition(CalculatorOperation):
    def calculate(self, num_1, num_2):
        return num_1 + num_2


class Subtraction(CalculatorOperation):
    def calculate(self, num_1, num_2):
        return num_1 - num_2


def main():
    addition = Calculator(Addition())
    print(addition.solve(10, 5))


if __name__ == '__main__':
    main() # None

Tags: selfnonereturnmaindefcalccalculatornum
1条回答
网友
1楼 · 发布于 2024-05-23 16:07:29

只需传入在main中创建的对象(不要从__init__方法中重新初始化),如下所示:

class Calculator:
    def __init__(self, calc_op):
        self.calc_op = calc_op

相关问题 更多 >