여정의 기록

Python/Class 본문

공부/Python

Python/Class

Chelsey 2022. 2. 12. 02:22
728x90

Class란?

class하면 객체지향 프로그래밍을 떠올릴수있다. (절차적 프로그래밍과 객체지향 프로그래밍은 반댓말이 아니다)

객체지향 프로그래밍에서 클래스를 정의하고 클래스를 통해 객체를 생성한다. 

붕어빵틀에 많이들 비유를 한다. 

 

self

class로부터 생성된 객체 자기자신, java의 this와 같은 것이다.

class 클래스이름:
	def method, 함수이름(self):
    		method가 수행할 코드

프로젝트를 진행할 때 클래스를 호출하면서 에러가 났던적이 있다. 결론은 인자에 self를 사용하지 않아서였는데, self라는 놈이 대체 무엇을 하는지가 궁금했다. 

(인스턴스란? 클래스에 소속된 개별적인 객체, 메서드의 self로 전달되는 것은 인스턴스 자체)

 

도대체가 왜 self라는 인자를 넣어야 실행이 되는 것인가??!!

https://www.youtube.com/watch?v=oaiQ5hYKHTE  (이해 출처)

글을 아무리 읽어도 이해가 안되서 영상을 찾아봤다.

 

1. e라는 인스턴스로 Employee 클래스를 지목했다. 이제 e를 부르면 Employee를 찾아간다.

2. set_salary에 인자가 self, value 두 개가 있는데 e.set_salary로 인자 2000인 1개만 넣은 이유는,

e와 self가 연결되기 때문이다. e를 호출함으로써 self를 찾아가게 된다. 2000 값이 value에 할당된다.

3. 2000값이 할당된 해당 클래스의 salary 값이 정해졌으므로, e.salary로 부르면 할당된 값의 결과가 나온다.

 

그러니까, e를 부른다는 것 자체가 self로 찾아가서 연결이 된다고 한다.

class Employee:
  def set_salary(self, value):
    self.salary=value

e=Employee()
e.set_salary(2000)
print(e.salary)

하지만 여전히 이해가 안되는건, import를 하여 클래스를 호출해 놨는데 왜 따로 self를 통해서 클래스를 사용할 수 있는 지 모르겠다. 좀 더 찾아봐야겠다.

 

__init__

무조건 실행되는 method

클래스로부터 객체가 생성될 때 자동으로 호출되는 특별한 method이다. 

반드시 첫번째 인수는 self로 지정해야한다.

해당 클래스를 선언하는 순간 바로 실행된다.

class Monster:
	def move(self):
    ...
    
    def __init__(self):
    	print("init실행")
        self.hp+=10
        
# 실행 방법
m = Monster()
# 선언 하는 순간 실행된다.

클래스를 객체로 생성

hong=User()

method 수행, isinstance 

cat.move()
# 객체명.메소드명()

isinstance(cat, Monster)
# Is cat from 'Monster'class?
# True, False

비어있는 클래스

class item:
	pass
728x90