对于为医生(专科医生)创建时间表的程序,我想使用由不同类创建的对象的某些属性,以便在为医生制定时间表的类中使用。
class makePatient(object):
def __init__(self,name,room):
self.name = name
self.room = room
def getPatient(self):
print(self.name)
print(self.room)
class makeSpecialist(object):
def __init__(self,name,specialization,timetable):
self.name = name
self.specialization = specialization
self.timetable = timetable
def getSpecialist(self):
print(self.name)
print(self.specialization)
print(self.timetable)
class makeAgenda(object):
def addAgenda(self):
self.timetable.append()
#I want to append the name of the patient I have defined here.
print(self.timetable)
patient1 = makePatient("Michael","101")
specialist1 = makeSpecialist("Dr. John","Hematology",[])
我现在该怎么做,以确保名称“迈克尔”被添加到专家约翰博士的名单中?
在此先感谢,如有需要,我会提供更多详情!
答案 0 :(得分:2)
我认为另一种方法会更好;您可以将整个makePatient
对象放入专家的时间表中:
specialist1 = makeSpecialist("Dr. John", "Hematology", [patient1])
现在,您可以在专家的时间表中访问患者的姓名和其他属性:
for patient in specialist1.timetable:
print(patient.name)
您还可以定义一个__repr__
方法来告诉Python如何显示对象,而不是当前的getPatient
:
class makePatient(object):
# ...
def __repr__(self):
return "{0} (room {1})".format(self.name, self.room)
现在打印整个时间表时:
>>> print(specialist1.timetable)
您获得了必要的信息:
[Michael (room 101)]
另请注意,应该简单地调用类,Patient
,Specialist
和Agenda
;隐含make
。
最后,您会在makeAgenda.addAgenda
中收到错误,因为__init__
没有self.timetable
,makeAgenda
对象不存在,append()
为空{{1}}无论如何都没有做任何事情。
答案 1 :(得分:1)
类通常用于表示允许的实体和操作,包括构造或制作它们的新实例。因此,您的类名称会更好地命名为Patient
,Specialist
和Agenda
。在Python中构造任何类的新实例的方法的名称始终为__init__()
。
也就是说,在创建Patient
和Specialist
之后,您可以将患者实例添加到专家的时间表/议程中,方法是将其传递给专门为此目的设计的Specialist
方法。换句话说,专家“拥有”一个名为timetable
的议程实例,可以通过适当命名的add_to_timetable()
方法添加患者。
这就是我的意思 - 请注意我已修改您的代码以遵循PEP 8 -- Style Guide for Python Code指南,我建议您遵循这些指南:
class Agenda(object):
def __init__(self):
self.events = []
def append(self, event):
self.events.append(event)
class Patient(object):
def __init__(self, name, room):
self.name = name
self.room = room
def get_patient(self):
print(self.name)
print(self.room)
class Specialist(object):
def __init__(self, name, specialization):
self.name = name
self.specialization = specialization
self.timetable = Agenda()
def add_to_timetable(self, patient):
self.timetable.append(patient)
def get_specialist(self):
print(self.name)
print(self.specialization)
print(self.timetable)
specialist1 = Specialist("Dr. John", "Hematology")
patient1 = Patient("Michael", "101")
specialist1.add_to_timetable(patient1)
答案 2 :(得分:0)
我不太确定你在这里尝试使用只打印值的方法或者使用makeAgenda类来完成什么,但是这里有你如何在John博士的名单中找到迈克尔:
specialist1.timetable.append(patient1.name)