Jumping Bytes and Hopping Bits
the church of tech
Menu

파이썬 self 예제 August 2, 2019

이제 실제 `사람` 개체에서 작동할 수 있는 메서드를 만들려면 개체에 대한 참조를 제공해야 합니다. 따라서 Person의 전체 개체를 자체 클래스로 전달하는 대신 self: Important: 다른 언어와 달리 파이썬에서 새 개체가 생성될 때 새 인스턴스 메서드 집합을 자체적으로 만들지 않습니다. 따라서 인스턴스 메서드는 각 개체 초기화를 사용하여 만들지 않고 클래스 개체 내에 있습니다. 파이썬은 완전한 객체 지향 언어이므로 클래스도 객체임을 기억하십시오. 그래서 그것은 메모리 내에서 살고 있다. 클래스가 __init___)의 메서드를 정의하면 클래스 인스턴스화는 새로 생성된 클래스 인스턴스에 대해 __init___()를 자동으로 호출합니다. 따라서 이 예제에서는 메서드의 첫 번째 매개 변수에 대해 실제로 이름을 사용할 수 있지만 자체 호출 규칙을 고수하는 것이 좋습니다. except 절의 클래스는 동일한 클래스 또는 기본 클래스인 경우 예외와 호환됩니다(파생 클래스를 나열하는 예외는 기본 클래스와 호환되지 않음). 예를 들어 다음 코드는 B, C, D를 순서대로 인쇄합니다. 자아의 목적은 인스턴스 메서드에 대한 참조를 보유하고 우리가 해당 참조에 대한 명시적 액세스 권한을 가지는 것입니다. 파이썬에서 자기 단어의 목적은 무엇입니까? 해당 클래스에서 만든 특정 개체를 참조하는 것으로 이해하지만 모든 함수에 매개 변수로 명시적으로 추가해야하는 이유를 알 수 없습니다. 예를 들어, 루비에서 나는이 작업을 수행 할 수 있습니다 : 생성기는 이터레이터를 만들기위한 간단하고 강력한 도구입니다. 일반 함수처럼 작성되지만 데이터를 반환할 때마다 yield 문을 사용합니다.

다음()이 호출될 때마다 생성기는 중단된 위치에서 다시 시작됩니다(모든 데이터 값과 마지막으로 실행된 문을 기억함). 예를 들어 생성기가 간단하게 만들 수 있음을 보여 주며 위의 예제를 살펴보겠습니다. obj1을 만들고 인수 6을 전달하는 동안 SomeClass의 인스턴스 메서드 insert_to_arr()를 호출합니다. 그러나 이제 이 메서드는 “어떤 객체가 나를 호출하고 누구의 인스턴스 속성을 업데이트해야 하는지”를 어떻게 알 수 있습니까? 여기서 는 누구의 arr 배열에 값 6을 더해야합니까? 좋아, 지금은 당신이 그것을 가지고 생각합니다. 그것이 바로 자아의 일입니다. 장면 뒤에, 모든 인스턴스 메서드 호출에서 파이썬은 해당 메서드 호출을 사용하여 인스턴스를 보냅니다. 따라서 실제로 일어나는 일은 파이썬이 인스턴스 메서드의 위의 호출을 아래와 같은 것으로 변환합니다: 범위는 네임스페이스에 직접 액세스할 수 있는 Python 프로그램의 텍스트 영역입니다. 여기서 “직접 액세스할 수 있습니다”는 이름에 대한 정규화되지 않은 참조가 네임스페이스에서 이름을 찾으려고 시도한다는 것을 의미합니다. 우선, 자기는 기존의 이름입니다, 당신은 그 대신에 다른 것을 넣을 수 (일관된). 자기가 암시적이거나 명시적이어야하는 질문이 있었습니다. 귀도 반 로섬은 자아가 머물러야 한다고 말하면서 이 질문을 해결했다. 아무도 루아를 키우지 못했다는 사실에 놀랐습니다.

Lua는 `self` 변수를 사용하지만 생략할 수는 있지만 여전히 사용할 수 있습니다. C++는 `이`에서도 마찬가지입니다. 각 함수에서 `self`를 선언해야 할 이유가 표시되지 않지만 lua 및 C ++와 마찬가지로 여전히 사용할 수 있어야합니다.

Categories: Uncategorized