class Human: def __init__(self, name, age): self.name = name self.age = age print('이름: {0}, 나이: {1}'.format(self.name, self.age))
def __init__(self, name, age):
객체 생성 후 객체 멤버로 정의된 변수에 접근 가능
hemtory = Human('햄토리', 10) print(hemtory.name, hemtory.age) # > 이름: 햄토리, 나이: 10 # > 햄토리 10
생성된 객체에 따로 멤버 변수 추가가능(그 객체에서만 사용가능)
hemtory.hobby = '먹기' print(hemtory.hobby) # > 먹기
-객체 내에서 사용가능한 함수(메서드 매개 변수에 self 꼭 사용)
멤버 변수 처럼 ' . '을 이용해 접근가능
class Human: def __init__(self, name, age): self.name = name self.age = age def active(self, something): print('{0}가 {1}를 합니다'.format(self.name, something)) hemtory = Human('햄토리', 10) hemtory.active('식사') # > 햄토리가 식사를 합니다
-다른 클래스에 있는 속성들을 그대로 사용할 수 있음
-상속하는 클래스는 부모 클래스, 상속받는 클래스는 자식 클래스
class Human: def __init__(self, name, age): self.name = name self.age = age class Student(Human): def __init__(self, name, age, sub): Human.__init__(self, name, age) self.sub = sub print('{0}는 {1} 과목을 잘합니다'.format(self.name, self.sub)) hemtory = Student('햄토리', 10, '수학') # > 햄토리는 수학 과목을 잘합니다
-여러 부모 클래스로부터 상속 받는 것
class Human: def __init__(self, name, age): self.name = name self.age = age class Hobby: def __init__(self, hobby): self.hobby = hobby class Student(Human, Hobby): def __init__(self, name, age, sub, hobby): Human.__init__(self, name, age) Hobby.__init__(self, hobby) self.sub = sub self.hobby = hobby print('{0}는 {1}살이고 {2} 과목을 잘합니다'.format(self.name, self.age, self.sub)) print('취미는 {0}입니다'.format(self.hobby)) hemtory = Student('햄토리', 10, '수학', '게임') # > 햄토리는 10살이고 수학 과목을 잘합니다 # > 취미는 게임입니다
-자식 클래스에서 부모 클래스에서 정의된 메서드를 재정의해서 사용
class Human: def __init__(self, name, age): self.name = name self.age = age def active(self, something): print('{0}가 {1}를 합니다'.format(self.name, something)) class Student(Human): def __init__(self, name, age, sub): Human.__init__(self, name, age) self.sub = sub def active(self, something): print('{0}가 {1}를 하고, {2} 공부를 합니다'.format(self.name, something, self.sub)) hemtory = Student('햄토리', 10, '수학') hemtory.active('식사') # > 햄토리가 식사를 하고, 수학 공부를 합니다
-무슨 작업을 할지는 아직 정하진 않았지만 일단 비워두고 넘어가겠다는 의미
class Student(Human): def __init__(self, name, age, sub): pass # > 햄토리가 식사를 하고, 수학 공부를 합니다
# 상속 받을 때 부모 클래스.__init__ 대신 super().__init__사용가능 class Student(Human): def __init__(self, name, age, sub): Human.__init__(self, name, age) self.sub = sub class Student(Human): def __init__(self, name, age, sub): super().__init__(self, name, age) self.sub = sub # 다중 상속일 때에는 처음 상속받는 클래스에 대한 것만 적용됨