객체가 어떤 클래스로부터 만들어졌는지 확인하는 함수
isinstance(인스턴스, 클래스)
class Student :
def study(self) :
print("공부하다.")
class Teacher :
def teach(self) :
print("가르치다.")
st = Student() # Student 객체 생성
te = Teacher() # Teacher 객체 생성
st.study() # 메소드 호출
te.teach()
class Student :
def study(self) :
print("공부하다.")
class Teacher :
def teach(self) :
print("가르치다.")
classroom = [Student(), Student(), Teacher(), Student()]
for person in classroom :
if isinstance(person, Student) : # 객체, 클래스
print(person.study()) #-> Studunt는 study 메소드 가짐
if isinstance(person, Teacher) :
print(person.teach()) #-> Teacher는 teach 메소드 가짐
class Student :
# 생성자 __init__ 함수
def __init__(self, name, korean, math, english, science) :
self.name = name # 멤버변수 = 매개변수 ->속성
self.korean = korean
self.math = math
self.english = english
self.science = science
# 소멸자
def __del__(self) :
print("{} 객체가 소멸되었음".format(self.name))
# 메소드 추가
def get_sum(self) :
return self.korean + self.math + self.english + self.science
def get_average(self) :
return self.get_sum() / 4
# to_string에서 __str__로 교체
def __str__(self) :
return "{}\\t{}\\t{}".format(\\
self.name,\\
self.get_sum(),\\
self.get_average())
students = [
Student("윤인성", 87, 88, 94, 95),
Student("연하진", 80, 87, 92, 99),
Student("구지연", 80, 85, 90, 95),
Student("나선주", 98, 85, 95, 84),
Student("윤아린", 80, 72, 96, 80),
Student("윤명월", 96, 85, 90, 95)
]
print("이름", "총점", "평균", sep="\\t")
for student in students :
print(str(student)) #str()로 교체
결과는 동일함
class Student :
# 클래스 변수 선언
count = 0
students = []
# 클래스 함수
@classmethod # 데코레이터
def print(cls) :
print("======학생 목록======")
print("이름\\t총점\\t평균")
for student in cls.students :
print(str(student))
print("======================")
# 생성자 __init__ 함수
def __init__(self, name, korean, math, english, science) :
self.name = name # 멤버변수 = 매개변수 ->속성
self.korean = korean
self.math = math
self.english = english
self.science = science
# 추가
Student.count += 1
Student.students.append(self)
# 소멸자
def __del__(self) :
print("{} 객체가 소멸되었음".format(self.name))
# 메소드 추가
def get_sum(self) :
return self.korean + self.math + self.english + self.science
def get_average(self) :
return self.get_sum() / 4
# str로 교체
def __str__(self) :
return "{}\\t{}\\t{}".format(\\
self.name,\\
self.get_sum(),\\
self.get_average())
students = [
Student("윤인성", 87, 88, 94, 95),
Student("연하진", 80, 87, 92, 99),
Student("구지연", 80, 85, 90, 95),
Student("나선주", 98, 85, 95, 84),
Student("윤아린", 80, 72, 96, 80),
Student("윤명월", 96, 85, 90, 95)
]
Student.print()
프라이빗 변수
class Test :
def __init__(self) :
self.name = "김선두" # 속성
self.height = 176 # 속성
t = Test()
print(t.name)
print(t.height)
t.height = 150
print(t.height)
class Test :
def __init__(self) :
self.name = "김선두" # 속성
self.__height = 176 # 프라이빗 속성
self.new_height =self.__height # 클래스 내부 사용 가능
t = Test()
print(t.name)
print(t.new_height)
print(t.__height) # 클래스 외부 사용 불가