python中的UML图?

python中的UML图?,python,inheritance,uml,associations,Python,Inheritance,Uml,Associations,我刚刚开始学习UML,目前正在尝试使用python实现此图的功能 我已经写了继承部分,但是我还不知道如何处理它的关联部分。谁能给我指点怎么做?特别是循环引用 我迄今为止的执行情况: class RailCar(): def __init__(self, name): if len(name) >= 2: self.__name = name self.locomotive = None else:

我刚刚开始学习UML,目前正在尝试使用python实现此图的功能

我已经写了继承部分,但是我还不知道如何处理它的关联部分。谁能给我指点怎么做?特别是循环引用

我迄今为止的执行情况:

class RailCar():
    def __init__(self, name):
        if len(name) >= 2:
            self.__name = name
            self.locomotive = None
        else:
            raise Exception("Name length of", type(self), " object must be at least 2 characters long.")

class PassengerCar(RailCar):
    def __init__(self, capacity):
        super().__init__(self, name)
        self.__capacity = capacity

class RestaurantCar(RailCar):
    def __init__(self, first):
        super().__init__(self, name)
        self.__first = first

class Locomotive():
    def __init__(self, railCar):
        self.railCar = railCar

rc01 = RailCar('01')
rc01.locomotive = "It works!!"
print(rc01.locomotive) 

假设自引用是private
next
属性的翻版。应该在关联旁边写上角色名称,如下所示:

无论如何,您可以使用
self.\u下一步
保存对
RailCar
实例的引用。然后getter/setter将引用这个私有属性

class RailCar():
    def __init__(self, name):
        # as above 
        self._next = None


    def setNext(self, next):
        self._next = next
        # you might check if the instance is RailCar.

    @property
    def getNext(self):
        return self._next

另外,
机车
-
轨道车
关系类似(具有相同的建模问题)。只是一个
self.\u首先
机车中

不幸的是,self-association没有命名/没有角色。所以很难说是什么。可能是拖车?在这种情况下,只需在
RailCar
内安装一个
self.nextRailsCar
或类似设备即可。