경기도미래기술학교 AI개발자 부트캠프 10일차 TIL - 클래스 만들기 self는 뭘까. 속성과 메소드.
2023. 5. 19. 18:24ㆍpython
반응형
클래스 만들기에서 좀 헷갈렸던게 self다. 일반적으로 함수 정의했을 때랑 클래스 안에서 함수 정의했을 때를 헷갈리지 말자. 다르다.
#self는 현재 인스턴스 자신을 참조하는 데 사용.
#해당 인스턴스의 속성에 접근하고 메서드를 호출하는 데 사용.
class Person2:
def greeting(self):
print('Hello')
def hello(self):
self.greeting()
eastjin = Person2()
eastjin.hello()
self는 사용한 적이 없는데 대체 어디서 튀어나온걸까.
일단 기본적으로 self라는 것 하나는 적어야 한다. class 함수같은 경우는 호출하면 기본값으로 하나의 매개변수가 가기 때문이다.
1. eastjin = Person2()라는 것으로 객체를 하나 만들었다.
2. eastjin.hello()를 호출한다.
3. self는 인스턴스를 바라보고있어서 자기자신이라는 뜻이다. 그래서 self.greetin()은 사실 내가 이미 명시했던 객체인 eastjin.greetin()과 같은 의미라고 보면 된다.
4. self.greeting()을 해서 위에 먼저 정의한 greeting 함수가 호출되어 'Hello'라는 것이 결과값으로 나온다.
솔직히 반만 이해했다. 동작방식이 조금 어렵다.
__init__은 클래스 함수의 속성을 초기화할 때 사용한다.
class Car :
car_count = 0 # 클래스 변수
def __init__(self, name, color) : # 객체가 생성될때 자동으로 수행되는 함수 "클래스 생성자"
self.name = name # self.name 필드, 클래스의 속성
self.color = color # 객체변수
Car.car_count += 1
print("Car가 생성되었습니다 ", Car.car_count)
def drive(self) :
print("drive")
def destroy(self) :
Car.car_count -=1
print("destroy.. ", Car.car_count)
def __del__(self) : # 객체가 소멸할 때 수행됨, del "클래스 소멸자"
print("메모리에서 제거됩니다")
mycar = Car('CMW자동차','pink')
mycar.drive()
속성은 이 객체의 상태? 같은 것을 말하는 것이고,
메서드는 이 객체가 어떻게 동작하는지에 대한 것이다.
지금 위에서 자동차를 하나 뽑았는데 CMW 자동차이고 색이 pink다. 이 것이 어트리뷰트.
mycar.drive()는 핑크색 CMW자동차가 달리는 것. 이 것이 메소드다.
728x90
'python' 카테고리의 다른 글
Numpy 하기. 기초 1강 (0) | 2023.05.23 |
---|---|
경기도미래기술학교 AI개발자 부트캠프 11일차 TIL - 크롤링 (0) | 2023.05.22 |
경기도미래기술학교 AI개발자 부트캠프 9일차 TIL - 왜 map의 값을 뽑을 때는 list를 써야 할까. 람다, 리스트 컴프리헨션 복습. (0) | 2023.05.19 |
경기도미래기술학교 AI개발자 부트캠프 8일차 TIL - 함수,람다,map,filter 등 (1) | 2023.05.17 |
파이썬으로 무작위(랜덤)로 명단 정하는 프로그램. random 이용 (0) | 2023.05.17 |