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으로 웹 스크래퍼 만들기 수업을 정리합니다.