【发布时间】:2015-09-09 21:09:39
【问题描述】:
我解决了这个问题:
开发一个使用下一个类型操作的应用程序:
-
Person(字段Name,方法ShowData()) -
Student(字段Education) -
Worker(字段WorkPlace)
类Student 和Worker 派生自类Person。
类Academy 在它的容器中收集Students 和Workers 并为方法ShowAll() 中的所有人显示Name、Education 或WorkPlace。
我们可以通过调用AddPerson()方法来添加新的人到Academy。
哪个层次的类是最好的 解决这个问题?
代码应包括继承和使用集合。
这是我的解决方案,但我不知道如何实现方法AddPerson:
class Academy(object):
theWholeList = []
@staticmethod
def showAll():
for obj in Academy.theWholeList:
if isinstance(obj,Student):
print obj.name+' - '+obj.edu
elif isinstance(obj,Worker):
print obj.name+' - '+obj.wplace
class Person(Academy):
def __init__(self,name):
self.name = name
super(Person, self).theWholeList.append(self)
def showData(self):
return vars(self)
class Student(Person):
def __init__(self, name, edu):
super(Student, self).__init__(name)
self.edu = edu
class Worker(Person):
def __init__(self, name, wplace):
super(Worker, self).__init__(name)
self.wplace = wplace
也许Academy 必须继承Person 和方法AddPerson 会是这样的:
def add(self,name):
super(Academy,self).__init__(name)
【问题讨论】:
-
看起来像作业,但我会说 showAll 不应该是静态方法。
-
又是秋天!另一批在 SO 上努力完成作业的学生 ;-)
标签: python python-2.7 oop inheritance