반응형
클래스와 인스턴스
객체(object)는 특정 타입의 인스턴스(instance)
- 1, 23, 456은 int의 인스턴스
- ‘hello’, ‘world’는 string의 인스턴스
- [1, 23, 456], [ ]은 list의 인스턴스
예시
사각형 넓이 구하기(R1=10 * 30/R2=300 * 20)
class Rectangle: def __init__(self, x, y): self.x = y self.y = y def area(self): return self.x * self.y def circumference(self): return 2 * (self.x + self.y) r1 = Rectangle(10, 30) r1.area() r1.circumference() r2 = Rectangle(300, 20) r2.area() r2.circumference()
사각형: 클래스(class)
각 사각형(R1, R2): 인스턴스(instance)
사각형의 정보: 속성(attribute)
- 가로 길이, 세로 길이
사각형의 행동/기능: 메소드(method)
- 넓이를 구한다. 둘레를 구한다.
인스턴스
생성자 메소드에서 self.name으로 정의
class Person: def __init__(self, name): self.name = name # 인스턴스 변수 정의 john = Person('john') print(john.name) # 인스턴스 변수 접근 및 할당 # john john.name = 'John Kim' # 인스턴스 변수 접근 및 할당 print(john.name) # John Kim
self
- 인스턴스 자기자신
- 파이썬에서 인스턴스 메소드는 호출 시 첫번째 인자로 인스턴스 자신이 전달되게 설계 => 매개변수 이름으로 self를 첫번째 인자로 정의
생성자(constructor) 메소드
- 인스턴스 객체가 생성될 때 자동으로 호출되는 메소드
- 인스턴스 변수들의 초기값을 설정
- 인스턴스 생성
- __ init __ 메소드 자동 호출
소멸자(destructor) 메소드
- 인스턴스 객체가 소멸(파괴)되기 직전에 호출되는 메소드
class Person: # 생성자 메서드 def __init__(self, name): self.name = name def greeting(self): return f'안녕 난 {self.name}' # 소멸자 메서드 def __del__(self): print('!') # 인스턴스 생성 p1 = Person('홍길동') # __init__메서드가 호출됨 print(p1.greeting()) # 직접 greeting을 호출! # 안녕 난 홍길동 # !
매직 메소드
__ str __ : 해당 객체의 출력 상태를 지정
- 프린트 함수를 호출할 때, 자동으로 호출
- 어떤 인스턴스를 출력하면 __ str __의 return 값이 출력
__ gt __: 부등호 연산자(>, greater than)
class Person: def __init__(self, name, age, mbti): self.name = name self.age = age self.mbti = mbti def greeting(self): return f'{self.name}입니다. {self.mbti}이구요' # print(p1 > p2) def __gt__(self, other): if self.age > other.age: return self else: return other def __str__(self): return f'{self.name} ({self.age})' def __len__(self): return self.age p1 = Person('JOHN', 30, 'istp') p2 = Person('jennie', 28, 'enfj') print(p1.name) print(p1.greeting()) print(p1 > p2) print(p1) print(len(p1)) # JOHN # JOHN입니다. istp이구요 # JOHN (30) # JOHN (30) # 30
반응형
댓글