я решить эту проблему:Python понимание ООП, наследование
разработать приложение, которое работает со следующими типами:
Person
(полеName
, методShowData()
)Student
(полеEducation
)Worker
(полеWorkPlace
)
Классы Student
и Worker
получены из класса Person
.
Класс Academy
в это контейнер собирает Students
и Workers
и показывает Name
, Education
или WorkPlace
для всех лиц, в методе ShowAll()
.
Мы можем добавить новое лицо в Academy
путем вызова метода AddPerson()
.
Какая иерархия классов является лучшим для решения этой проблемы?
кодекс должен включать в себя наследование и использование коллекций.
Это мое решение, но я не знаю, как реализовать метод 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 не должен быть статическим методом. – postelrich
И снова это падение! Еще одна партия студентов изо всех сил пытается сделать домашнее задание на SO ;-) – zmo