갬미의 성장일기
[Python] class 본문
class 생성시 이름은 항상 대문자로 시작
인스턴스 = 클래스를 받는 변수
메서드 = 함수
속성 = 클래스의 변수
클래스 __init__ 함수
- 인스턴스를 생성할때 자동으로 실행되는 매직 메서드 (magic method) 스페셜 메서드(special method)라고도 함
- 그냥 할당하면 자동으로 생성 됨
- 여기서 만든 변수는 클래스 내 다른 메서드에서도 사용 가능 (클래스를 만듦과 동시에 실행 되기 때문)
class Customer:
def __init__(self, name, house, address):
self.name = name
self.house = house
self.address = address
def join (self):
print (self.address, '에 사는', self.house, self.name, '님이 카카오 뱅크에 가입하셨습니다.')
def loarn_require(self):
print (self.name, '님이 대출을 신청했습니다')
hong = Customer('홍길동', '자가', '역삼동')
hong.join()
이때 인스턴스 생성시 name, house, address 지정 안해주면 오류 남
__init__ 말고 클래스 다른 메서드에서 속성 지정하는 경우
class Customer2:
def __init__(self, name):
self.name = name
def join (self, name, house, address):
self.name = name
self.house = house
self.address = address
print (self.address, '에 사는', self.house, self.name, '님이 카카오 뱅크에 가입하셨습니다.')
def loarn_require(self):
print (self.name, '님이 대출을 신청했습니다')
print (self.address, '님이 대출을 신청했습니다')
hong = Customer2('홍길동')
hong.join('홍길동', '자가', '역삼동')
인스턴스 생성시 name 지정 안하면 오류, join 함수 사용할 때 house, address 지정 안하면 오류
__init__ 에서 지정한 속성을 사용할때 vs 다른 메서드에서 지정한 속성을 사용할때
loarn_require() 메서드에서 사용할 수 있는 속성은 ? - name
loarn_require() 메서드에서 address 사용하고 싶다면?
- address 를 사용하는 다른 메서드 먼저 호출하고 그 다음에 호출하기
- loarn_require() 메서드에서 address 지정 받기
정리
- class 인스턴스 생성시 자동으로 호출되는 함수 (메서드) == __init__
- 따라서 init에 지정된 속성은 인스턴스 생성시 지정해줘야 함
- 이 속성들은 클래스 내에서 자유롭게 사용
- __init__ 써도 되고 안써도 된다
- 메서드에서 사용하고자 하는 속성
- 해당 메서드에서 속성을 지정하지 않았다면
- 이 메서드를 사용하기 전에 그 속성을 사용하는 메서드를 먼저 실행한다
- __init__에 지정
- 메서드에서 지정
- 해당 메서드에서 속성을 지정하지 않았다면
'Algorithm > Python 문법' 카테고리의 다른 글
[Python] 진수 변환하기 (0) | 2022.01.15 |
---|---|
[Python] 딕셔너리 하나의 key에 여러개 value 추가하기 (0) | 2022.01.06 |
[Python] 아스키코드 사용하기 (0) | 2022.01.05 |
[Python] switch-case문 사용하기 (0) | 2022.01.05 |
Comments