나는 Superclass People을 작성했으며이 두 가지 하위 클래스 인 employee와 patient를 직원으로부터 두 개의 하위 클래스 인 doctor와 staff로 구성했습니다.목록의 특정 객체에 액세스하는 방법 (파이썬)
사람들의 속성은 다음과 같습니다 : 이름, 주소,
직원 생년월일 : 이름, 주소, 날짜 : 이름, 주소, 생년월일, 직원 번호, 날짜의 날짜가
환자를 고용을 출생, MCP, 입학 일, 병원 명, 의사의 이름과 방 번호의
의사 : 이름, 주소, 생년월일, 직원 수, 고용의 날짜, 연봉, 전문 날짜 및 환자의 수
직원 : 이름, 광고 드레스, 생년월일, 직원 번호, 고용일, 시간당 급여 및 풀 타임 또는 파트 타임 상태
각 클래스의 각 사람마다 데이터를 입력 한 다음 텍스트 파일을 가져올 텍스트 파일을 만들어야합니다. 데이터를 파이썬에 저장하고 다섯 가지 클래스 유형의 객체를 1d 목록에 저장합니다.
이 부분을 완료했지만 계산을 수행하려면 특정 클래스 유형에 액세스해야합니다. 예를 들어, 시간당 급여에서 연봉을 계산하려면 직원에게 연락해야하며 연봉을 받으려면 의사에게 진찰을 받아야하지만이 방법은 잘 모르겠습니다. 나는 내가 말하는 오류 메시지가 작성한 코드를 실행하려고하면
print(people[i].getHSalary())
AttributeError: 'Person' object has no attribute 'getHSalary'
내 오류에 내 말 루프. 이 오류가 발생하지 않고 각 객체의 특정 속성에 액세스하려면 무엇을 사용할 수 있습니까? 특정 개체와 독립적으로 계산해야하는 몇 가지 사항이 있습니다.
from Person import Person
from Employee import Employee
from Doctor import Doctor
from Staff import Staff
from Patient import Patient
def main():
people = []
infile = open("classdata.txt", "r")
allLines = infile.readlines()
for i in range(len(allLines)):
line = allLines[i].strip()
if line == "Person":
i += 1
line = allLines[i].strip()
name = line
i += 1
line = allLines[i].strip()
address = line
i += 1
line = allLines[i].strip()
DOB = line
person = Person(name, address, DOB)
people.append(person)
elif line == "Employee":
i += 1
line = allLines[i].strip()
name = line
i += 1
line = allLines[i].strip()
address = line
i += 1
line = allLines[i].strip()
DOB = line
i += 1
line = allLines[i].strip()
empNum = line
i += 1
line = allLines[i].strip()
DOH = line
emp = Employee(name, address, DOB, empNum, DOH)
people.append(emp)
elif line == "Doctor":
i += 1
line = allLines[i].strip()
name = line
i += 1
line = allLines[i].strip()
address = line
i += 1
line = allLines[i].strip()
DOB = line
i += 1
line = allLines[i].strip()
empNum = line
i += 1
line = allLines[i].strip()
DOH = line
i += 1
line = allLines[i].strip()
aSal = line
i += 1
line = allLines[i].strip()
spec = line
i += 1
line = allLines[i].strip()
patients = line
doc = Doctor(name, address, DOB, empNum , DOH, aSal, spec, patients)
people.append(doc)
elif line == "Staff":
i += 1
line = allLines[i].strip()
name = line
i += 1
line = allLines[i].strip()
address = line
i += 1
line = allLines[i].strip()
DOB = line
i += 1
line = allLines[i].strip()
empNum = line
i += 1
line = allLines[i].strip()
DOH = line
i += 1
line = allLines[i].strip()
jTitle = line
i += 1
line = allLines[i].strip()
dept = line
i += 1
line = allLines[i].strip()
hSalary = line
i += 1
line = allLines[i].strip()
status = line
staff = Staff(name, address, DOB, empNum, DOH, jTitle, dept, hSalary, status)
people.append(staff)
elif line == "Patient":
i += 1
line = allLines[i].strip()
name = line
i += 1
line = allLines[i].strip()
address = line
i += 1
line = allLines[i].strip()
DOB = line
i += 1
line = allLines[i].strip()
MCP = line
i += 1
line = allLines[i].strip()
dateAdmit = line
i += 1
line = allLines[i].strip()
hosp = line
i += 1
line = allLines[i].strip()
docName = line
i += 1
line = allLines[i].strip()
roomNum = line
pat = Patient(name, address, DOB, MCP, dateAdmit, hosp, docName, roomNum)
people.append(pat)
for i in range(len(people)):
print("%s \n" % people[i])
if type(staff) is Staff:
print(people[i].getHSalary())
main()
문제가 "목록의 특정 개체에 액세스하지 못했습니다." 당신의 코드에서의 문제는'Person'은'getHSalary'라는 함수가 없다는 것입니다. –
게터 기능을 구현 한 방법을 보여줄 수 있습니까? – MMF
그래, 그 기능이 사람이 아니란 걸 알아. 우리 교수는 우리가 하나의 목록에 모든 다른 객체를 저장하고 "모든 직원에 대한 총 연봉을 결정하고 출력"하기를 원했습니다. 급여를받는 유일한 수업은 스탭 클래스와 의사 클래스입니다. 직원 클래스는 HSalary를, 의사 클래스는 이미 연봉으로 주어진 aSalary를 얻을있다. 나는 서로 독립적 인 계산을 할 수 있도록 각 클래스 유형에 액세스하는 방법을 찾아 내려고 노력하고 있습니다. –