isinstance() 함수

isinstance()

객체가 어떤 클래스로부터 만들어졌는지 확인하는 함수

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 메소드 가짐

str()

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) # 클래스 외부 사용 불가