【发布时间】:2018-04-30 11:05:13
【问题描述】:
所以我最近开始学习 python,现在我被一个任务困住了,我应该实现一个 UML 图。 它看起来像这样:
基本上是模特儿、成人、儿童和退休人士。现在我被卡住的部分是任务是一个参数说“alter”(eng.=age)定义应该初始化哪个类。 18 岁以下的人(alter
现在我的问题是我不知道如何实现这种区分......
这是我目前所拥有的:
class Person:
def __init__(self, name, male, alter):
self.name = name
self.male = male
self.__alter = alter
def print_beschreibung(self):
if self.male:
print("Ich heiße " + self.name + ", bin männlich,", self.__alter, "Jahre alt")
else:
print("Ich heiße " + self.name + ", bin weiblich,", self.__alter, "Jahre alt")
def get_alter(self):
return self.__alter
def set_alter(self, neues_alter):
self.__alter = neues_alter
class Erwachsener(Person):
def __init__(self, name, male, alter, lohn, ist_verheiratet, kinder):
super().__init__(name, male, alter)
self.__lohn = lohn
self.ist_verheiratet = ist_verheiratet
self.kinder = kinder
peter = Person("Peter Lustig", True, 52)
peter.print_beschreibung()
【问题讨论】:
-
您是说
Person构造函数应该根据人的年龄返回相应子类的实例?所以peter会是Erwachsener? -
没错,从来没有这样想过。构造函数可以有return语句吗?
-
但这不起作用。您只将 3 个参数传递给构造函数:
Person("Peter Lustig", True, 52),但Erwachsener构造函数需要更多参数:name, male, alter, lohn, ist_verheiratet, kinder。您必须像Person('Peter Lustig', True, 52, 12345, False, 0)这样调用构造函数。
标签: python python-3.x class inheritance uml