[PYTHON] 파이썬 3.x에서 파이썬의 객체를 상속하는 것이 필요하거나 유용합니까?
PYTHON파이썬 3.x에서 파이썬의 객체를 상속하는 것이 필요하거나 유용합니까?
구형 파이썬 버전에서는 파이썬에서 클래스를 만들 때 객체를 새로운 스타일의 객체로 허용하는 특수 내장 파이썬 요소를 이해합니다.
최신 버전 (3.0 및 2.6 이상)은 어떻습니까? 나는 클래스 객체에 대해 봤지만 너무 많은 결과를 얻는다. 어떤 힌트?
감사!
해결법
-
==============================
1.파이썬 3에서 새로운 스타일을 가지기 위해 객체에서 상속 할 필요가 없습니다. 모든 클래스는 새로운 스타일입니다.
파이썬 3에서 새로운 스타일을 가지기 위해 객체에서 상속 할 필요가 없습니다. 모든 클래스는 새로운 스타일입니다.
-
==============================
2.이것이 낡은 질문이라는 것을 알았지 만, 파이썬 3에서도 두 가지가 똑같은 것은 아닙니다.
이것이 낡은 질문이라는 것을 알았지 만, 파이썬 3에서도 두 가지가 똑같은 것은 아닙니다.
명시 적으로 객체로부터 상속받은 경우 실제로 수행중인 작업은 해당 시점을 가리키는 것에 관계없이 내장 객체를 상속받는 것입니다.
따라서 어떤 이유로 든 객체를 덮어 쓰는 (매우 엉뚱한) 모듈을 가질 수 있습니다. 이 첫 번째 모듈을 "newobj.py"라고 부릅니다.
import builtins old_object = builtins.object # otherwise cyclic dependencies class new_object(old_object): def __init__(self, *args, **kwargs): super(new_object, self).__init__(*args, **kwargs) self.greeting = "Hello World!" builtins.object = new_object #overrides the default object
그런 다음 다른 파일 ( "klasses.py")에서 :
class Greeter(object): pass class NonGreeter: pass
그런 다음 세 번째 파일 (실제로 실행할 수 있음)에서 :
import newobj, klasses # This order matters! greeter = klasses.Greeter() print(greeter.greeting) # prints the greeting in the new __init__ non_greeter = klasses.NonGreeter() print(non_greeter.greeting) # throws an attribute error
따라서 객체에서 명시 적으로 상속하는 경우 암시 적 상속을 허용하는 경우와 다른 동작을 얻게됩니다.
from https://stackoverflow.com/questions/1238606/is-it-necessary-or-useful-to-inherit-from-pythons-object-in-python-3-x by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 장고 애플리케이션이 개발 서버에서 실행 중인지 여부를 어떻게 알 수 있습니까? (0) | 2018.10.29 |
---|---|
[PYTHON] 장고 Rest 프레임 워크 - ModelSerializer에서 사용자 정의 필드를 추가하는 방법 (0) | 2018.10.29 |
[PYTHON] 튜플에 값을 추가하는 방법? (0) | 2018.10.29 |
[PYTHON] 파이썬의 표준 라이브러리에 정렬 된 컨테이너가없는 이유는 무엇입니까? (0) | 2018.10.29 |
[PYTHON] 하나의 팬더 데이터 프레임에 팬더 데이터 프레임 목록 결합 (0) | 2018.10.29 |