self
은 메소드를 호출하는 객체입니다. 자바에서는 this
과 약간 비슷합니다.
__init__
은 초기화 할 때 각 객체에서 호출 될 때 호출됩니다. Java의 생성자와 같습니다.
객체를 만들 때 객체의 속성 (Java의 멤버 변수)을 설정할 때마다 __init__
을 사용합니다. "빈"객체가 만족 스럽다면 __init__
메소드가 필요하지 않지만 인수를 사용하여 객체를 생성하려면 필요합니다.
예제는 다음과 같습니다
우리는 우리가 만든 물체를 볼 수 있습니다
class StackOverflowUser:
def __init__(self, name, userid, rep):
self.name = name
self.userid = userid
self.rep = rep
dave = StackOverflowUser("Dave Webb",3171,500)
:
>>> dave.rep
500
>>> dave.name
'Dave Webb'
그래서 우리가 __init__
을 볼 수는 인수를 전달 우리는 함께 생성자에게 준 self
과 함께 생성 된 개체에 대한 참조입니다. 그런 다음 인수를 처리하고 객체를 적절히 업데이트 할 때 self
을 사용합니다.
다른 언어에서 필요하지 않은 이유는 파이썬이 self
인 이유입니다. Python FAQ에 따르면
왜 '자체가'법의 정의와 통화에서 명시 적으로 사용되어야한다?
첫째, 당신이 명시 적으로 참조하거나 전화를 할 경우
둘째, 그것은 특별한 구문이 필요 없다는 것을 의미한다 ... 당신이 방법을 사용 또는 인스턴스 대신 지역 변수의 속성 것을 더 분명 메소드를 특정 클래스의 ...
마지막으로, 예를 들어, 변수를 사용하면 구문상의 문제를 해결할 수 있습니다. 파이썬의 로컬 변수는 (정의에 따라) 함수 본문에 지정된 값 전역 적으로 명시 적으로 선언되지 않은 경우), 인터프리터에게 할당이 인스턴스 변수 대신에 인스턴스 변수에 대입 할 것을 지시하는 방법이 있어야합니다 지역 변수, 그리고 바람직하게는 구문 론적이어야합니다 (효율성상의 이유로) ...
"자기"는 대문자로 사용하지 마십시오. 그것은 '자기'라고 쓰여졌습니다. 소문자. 어떤 파이썬 튜토리얼을 읽고 있습니까? 책의 링크 또는 이름을 입력하십시오. –