class Car(): # class 생성
wheels = 4
doors = 4
Windows = 4
seats = 4
def start():
print("I started")
porche = Car() # instance 생성
porche.color = 'red'
k3 = Car() # instance 생성
k3.color = 'blue'
print(Car.color) # Error
print(f'color : {porche.color}')
print(f'color: {k3.color}')
print(f'color : {porche.color}'), print(f'color: {k3.color}') 코드는 문제
없이 출력되지만 print(Car.color)는 Error가 발생한다.
color는 Car class에 없는 속성이여서 Error가 발생하지만 porche, k3 instance에는 추가된 속성이다. 이처럼 기본 설계도와 다르게 제품에 추가 기능을 넣을 수 있다.
# 1번
class Car(): # class 생성
wheels = 4
doors = 4
Windows = 4
seats = 4
def start():
print("I started")
# 2번
class Car(): # class 생성
wheels = 4
doors = 4
Windows = 4
seats = 4
def start():
print("I started")
두 코드는 비슷하지만 다르다. 1번 코드는 def start()함수가 class내부에 있고 2번은 class 바깥에 있다. 이처럼 함수가 class 내부에 있으면 method 바깥에 있으면 function이라 부른다.
class Car(): # class 생성
wheels = 4
doors = 4
Windows = 4
seats = 4
def start():
print("I started")
k3 = Car()
k3.start() # Error
start() method를 호출하니 TypeError: start() takes 0 positional arguments but 1 was given 에러가 발생한다.
arguments를 준 적이 없는데 1개 arguments가 있다고 한다.
그 arguments는 self이다.
self는 모든 method의 첫번째 arguments이며 method를 호출하는 instance"자신"이다.
class Car(): # class 생성
wheels = 4
doors = 4
Windows = 4
seats = 4
def start(self):
print(self)
print(self.color)
print("I started")
k3 = Car() # instance 생성
k3.color = 'blue'
k3.start() # <__main__.Car object at 0x0000020F95E56B50>
# blue
# I started
self arguments를 주고 호출하니 <__main__.Car object at 0x0000020F95E56B50>
를 출력한다. 그 이유는 self는 instance"자신" 이기 때문이다. 그리고 self.color를 출력하니 blue가 출력된다. self는 instance여서 k3의 color "blue"를 출력하게 된다.
method를 호출하면 instance "자기 자신" k3를 arguments로 입력받아 실행된다.
그리고 instance는 class의 결과물이기 때문에 class의 속성들을 가진다.
그래서 wheels, doors, windows, seats 속성을 출력할 수 있다.
class Car(): # class 생성
wheels = 4
doors = 4
Windows = 4
seats = 4
def start(self):
print(self)
print(self.color)
print(self.windows)
print("I started")
k3 = Car() # instance 생성
k3.color = 'blue'
k3.start(k3) # <__main__.Car object at 0x0000020F95E56B50>
# blue
# 4
# I started
본 글은 노마드 코더의 Python으로 웹 스크래퍼 만들기 수업을 정리합니다.