Programing

Python 3.x의 Python 객체에서 상속하는 것이 필요하거나 유용합니까?

lottogame 2020. 10. 27. 07:48
반응형

Python 3.x의 Python 객체에서 상속하는 것이 필요하거나 유용합니까?


파이썬에서 클래스를 만들 때 이전 파이썬 버전에서는 객체를 새로운 스타일의 객체로 허용하는 특수 내장 파이썬 요소를 이해하는 한 객체 에서 상속 할 수 있습니다 .

최신 버전 (> 3.0 및 2.6)은 어떻습니까? 나는 클래스 객체에 대해 검색했지만 (분명한 이유로) 너무 많은 결과를 얻었습니다. 힌트가 있습니까?

감사!


object파이썬 3에서 새로운 스타일을 갖기 위해에서 상속 할 필요가 없습니다. 모든 클래스는 새로운 스타일입니다.


나는 이것이 오래된 질문이라는 것을 알고 있지만 파이썬 3 에서도이 두 가지가 완전히 같지 않다는 점에 주목할 가치가 있습니다.

에서 명시 적으로 상속하는 경우 object실제로 수행하는 작업은 해당 시점이 가리키는 내용에 관계없이 에서 상속 builtins.object 하는 것입니다.

따라서 어떤 이유로 객체를 재정의하는 (매우 이상한) 모듈을 가질 수 있습니다. 이 첫 번째 모듈을 "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

따라서 객체에서 명시 적으로 상속하는 경우 암시 적 상속을 허용하는 것과 다른 동작이 발생 함을 알 수 있습니다.

참고 URL : https://stackoverflow.com/questions/1238606/is-it-necessary-or-useful-to-inherit-from-pythons-object-in-python-3-x

반응형