클래스 속성 vs 인스턴스 속성

클래스는 붕어빵을 만드는 틀
객체는 붕어빵 한 개

클래스 속성

class Person:
    count = 0

person1 = Person("jhy")
print(Person.count)
print(Person.count)
# 0
# 0
Person.count = 100
print(Person.count)
print(person1.count)
# 100
# 100

인스턴스 속성

class Person:
    count = 0
    
person1.count = 200
print(Person.count)
print(person1.count)
# 100
# 200

super()

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def get_name(self):
        print(f'제 이름은 {self.name}입니다.')

    def get_age(self):
        print(f'제 나이는 {self.age}세 입니다.')

class Student(Person):
    # def __init__(self, name, age, GPA):
        # super().__init__(name, age)
        # self.GPA = GPA

    def get_GPA(self):
        print(f'제 학점은 {self.GPA}입니다.')

if __name__ == "__main__":
    student_a = Student('김OO', 27)
    student_a.get_name()  

# 제 이름은 김OO입니다.
class Person:
    count = 0

    def __init__(self):
        self.hi = 100

    def test(self):
        print("test function")


class Foo(Person):
    def __init__(self):
        print("Foo init")

    def func1(self):
        print("function 1")

    def func2(self):
        print("function 2")

if __name__ == "__main__":
    f = Foo()
    f.test()
    f.hi

# Parent Person class test function
# AttributeError: 'Foo' object has no attribute 'hi'

참고
[1] https://supermemi.tistory.com/177
[2] https://supermemi.tistory.com/176