在python中,我怎样才能在这些类之间创建这样的关联?

问题描述 投票:0回答:1

这里是UML图][2][2]。https:/i.stack.imgur.comjSnIn.png。

我想写一个python程序来实现这个图。我创建了一个名为CarPackage的包,并在里面放入了3个类(汽车、电机、相机)。我不知道到底如何把这些类连接起来,python sintax给我带来了麻烦。我在网上搜索了一下,但没有找到任何有用的东西。

这是我到现在为止的代码。

class Car:
    Motor = []
    def __init__(self, Motor,  Camera):
        self.__Motor = Motor # private attribute
        self.__Camera = Camera()  # private attribute

        def move_forward(self):
            print("Moving forward")

        def move_backward(self):
            print("Moving backward")

        def stop(self):
            print("The car has stopped")

        def take_picture(self):
            print("Taking picture...")```




from CarPackage import Car

class Camera(Car):
    resolution_X = int
    resolution_Y = int
    rotation = int

    def __init__(self, resolution_X, resolution_Y, rotation):
        self.__X = resolution_X
        self.__Y = resolution_Y
        self.__rot = rotation

    def take_picture(fileName):
        print("Taking picture...")




from CarPackage import Car

class Motor(Car):
    forward_pin = int
    backward_pin = int

    def __init__(self, forward_pin, backward_pin):
        self.__forward = forward_pin  # private attribute
        self.__backward = backward_pin  # private attribute

    def move_forward(self):
        print("Moving forward")

    def move_backward(self):
        print("Moving backward")

    def stop(self):
        print("The car has stopped")



python pycharm
1个回答
0
投票

如果我的理解没错的话,把Motor(Car)和Camera(Car)中的 "car "去掉,然后把car类改成 "汽车"。

class Car(Motor, Camera)
...

那么Car将继承Motor和Camera的方法和属性,但不会继承 启动 方法。如果需要隔离引用,那么可以将父对象作为子对象实例的属性,反之亦然,然后根据需要调整方法来调用这些属性或引用这些属性。

另一种思路是使用直接调用Camera和Motor的init方法来捕获它们的初始化属性。

class Car(Motor, Camera):
    Motor.__init__(self)
    Camera.__init__(self)

也可以参考调用父类__init__与多继承,正确的方法是什么?对于super()的使用有很好的描述(就是比我有更多python和计算机经验的人有了答案!)。

© www.soinside.com 2019 - 2024. All rights reserved.