08/02/2019 - No Comments!

파이썬 클래스 상속 예제

DoctorRobot 클래스의 코드를 보면 이 클래스에서 특성이나 메서드를 정의하지 않았음을 알 수 있습니다. 클래스 의사 로봇로봇의 하위 클래스이기 때문에 이 경우 __init___ 및 say_hi 메서드를 모두 상속합니다. 이러한 메서드를 상속한다는 것은 의사 로봇 클래스에 정의된 것처럼 사용할 수 있음을 의미합니다. DoctorRobot의 인스턴스를 만들 때 __init__ 함수는 이름 특성도 만듭니다. 위의 코드에서 출력에서 볼 수 있듯이 physisicianRobot 개체 y에 say_hi 메서드를 적용할 수 있습니다. 각 값은 개체이므로 클래스(해당 형식이라고도 함)가 있습니다. 개체로 저장됩니다.__class__. 3. 다단계 상속 : 우리는 자녀와 손자 관계가있을 때. 파생 된 클래스 정의의 실행은 기본 클래스와 동일하게 진행됩니다.

클래스 개체가 생성되면 기본 클래스가 기억됩니다. 이는 특성 참조를 해결하는 데 사용됩니다: 요청된 특성이 클래스에서 찾을 수 없는 경우 검색은 기본 클래스에서 보기 로 진행됩니다. 이 규칙은 기본 클래스 자체가 다른 클래스에서 파생된 경우 재귀적으로 적용됩니다. __init__() 메서드에서 초기화된 매개 변수를 재정의하여 last_name 변수가 이제 문자열 "상어"와 동일하게 설정되고 골격 변수가 문자열 "연골"과 동일하게 설정되고 눈꺼풀 변수가 이제 부울 값 True로 설정됩니다. . 클래스의 각 인스턴스는 이러한 매개 변수를 재정의할 수도 있습니다. 사실, 그보다 약간 더 복잡합니다. 메서드 확인 순서가 동적으로 변경되어 super()에 대한 협동 호출을 지원합니다. 이 방법은 다른 다중 상속 언어에서 호출-next-메서드로 알려져 있으며 단일 상속 언어에서 발견되는 수퍼 호출보다 더 강력합니다. super() 함수를 사용하면 클래스 개체에서 덮어쓴 상속된 메서드에 액세스할 수 있습니다. 파이썬의 특별한 단점은 - 글로벌 문이 적용되지 않는 경우 - 이름에 할당은 항상 가장 안쪽 범위로 이동한다는 것입니다. 할당은 데이터를 복사하지 않고 이름을 개체에 바인딩하기만 하면 됩니다.

삭제도 마찬가지입니다. 실제로 새 이름을 소개하는 모든 작업은 로컬 범위를 사용합니다. 출력은 클라운피쉬 오브젝트 케이시가 fish 메서드 __init__() 및 swim() 및 live_with_anemone()의 자식 클래스 메서드를 사용할 수 있음을 보여 주며, 일반적으로 인스턴스 변수는 각 인스턴스에 고유한 데이터에 대한 변수이며 클래스 변수는 클래스의 모든 인스턴스에서 공유하는 특성 및 메서드에 대한 것입니다: 자식 클래스를 사용하면 더 많은 메서드를 추가하거나 기존 상위 메서드를 재정의하거나 단순히 선택할 수 있습니다. 이 경우 수행할 pass 키워드로 기본 부모 메서드를 수락합니다.

Published by: jeshurun

Comments are closed.