복붙노트

[PYTHON] 파이썬 3.x에서 파이썬의 객체를 상속하는 것이 필요하거나 유용합니까?

PYTHON

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

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

최신 버전 (3.0 및 2.6 이상)은 어떻습니까? 나는 클래스 객체에 대해 봤지만 너무 많은 결과를 얻는다. 어떤 힌트?

감사!

해결법

  1. ==============================

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

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

  2. ==============================

    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
    

    따라서 객체에서 명시 적으로 상속하는 경우 암시 적 상속을 허용하는 경우와 다른 동작을 얻게됩니다.

  3. 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