본문 바로가기

Python + Web

Method has no argument -- #Self의 이해

#200223

 

핵심

 

self인자 x인 method -> class method, 클래스호출o, 객체호출x

self인자 o인 method -> instance method, 객체호출o

 

------

 

 

원인

function1()의 argument로 self가 없어서 생긴 빨간줄.

즉 ()안에 첫 argument로 self가 명시되지 않아 생긴 문제이다

 

클래스에 만들어넣는 대부분의 함수들은 객체들에 적용하기 위한 함수들

그러한 함수들의 경우 [반드시] 첫 argument로 self가 명시되어야 한다

 

일반적으로 그렇기에

클래스의 함수에 변수가 존재하지 않자, 해당 문제에 대해 알리는 것이다.

 

그러나 해당 함수의 생성 목적 == "클래스의 호출함수로 사용하기 위해"

-라면 해당 밑줄을 무시해도 무방하다

 

 

해결방법

if 클래스의 호출함수 -> (끝. 빨간줄 떠도 무시하기)

if 객체의 호출함수 ->클래스 함수에 변수를 부여하기

 

 

------

 

self인자 x

=> 누구의 메소드(함수)인지를 알 수 없다.

이러한 메소드는 클래스에서 호출해야. 객체 호출 x

클래스에서 사용할 수 있는 공통함수

 

self인자 o

=> [누구의 메소드인지 알 수 有] + [instance 생성 -> 각각의 *namespace에 접근가능o]

객체 호출o

*namespace: 해당 class 규칙에 따라 생성된, name들과의 매핑을 포함하고 있는 공간

 

 

**변수 안가진다고 출력이 안되는 건 아니다

다만 이렇게 빨간줄이 뜰 뿐.**