Python #6

jjewqm·2020년 1월 30일
0
post-thumbnail

class & instance

  • class : "특정 제품을 만들기 위한" 설계도
  • instance : 설계도로 만든 제품 (결과물)
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가 발생한다.
colorCar class에 없는 속성이여서 Error가 발생하지만 porche, k3 instance에는 추가된 속성이다. 이처럼 기본 설계도와 다르게 제품에 추가 기능을 넣을 수 있다.

fucntion & method

# 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이라 부른다.

self

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가 있다고 한다.
argumentsself이다.
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>
를 출력한다. 그 이유는 selfinstance"자신" 이기 때문이다. 그리고 self.color를 출력하니 blue가 출력된다. selfinstance여서 k3color "blue"를 출력하게 된다.

결론

method를 호출하면 instance "자기 자신" k3arguments로 입력받아 실행된다.
그리고 instanceclass의 결과물이기 때문에 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으로 웹 스크래퍼 만들기 수업을 정리합니다.

profile
글쓰기를 좋아합니다.

0개의 댓글