복붙노트

[PYTHON] TypeError : object ()는 __new__을 정의한 후에 매개 변수를 사용하지 않습니다.

PYTHON

TypeError : object ()는 __new__을 정의한 후에 매개 변수를 사용하지 않습니다.

나는이 작은 코드에서 오류가 어디에 있는지 정말로 알지 못한다.

class Personne:
    def __init__(self, nom, prenom):
        print("Appel de la méthode __init__")
        self.nom = nom
        self.prenom = prenom

    def __new__(cls, nom, prenom):
        print("Appel de la méthode __new__ de la classe {}".format(cls))
        return object.__new__(cls, nom, prenom)

personne = Personne("Doe", "John")

위에 제시된이 코드는 나에게 오류를 준다.

Traceback (most recent call last):
  File "/home/bilal/Lien vers python/21_meta_classes/1_instanciation.py", line 21, in <module>
    personne = Personne("Doe", "John")
  File "/home/bilal/Lien vers python/21_meta_classes/1_instanciation.py", line 14, in __new__
    return object.__new__(cls, nom, prenom)
TypeError: object() takes no parameters

해결법

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

    1.파이썬 3.3 및 이후 버전에서 __new__ 및 __init__을 모두 재정의하는 경우 재정의 할 객체 메소드에 추가 인수를 전달하지 않아야합니다. 이러한 메소드 중 하나만 대체하는 경우 다른 메소드에 추가 인수를 전달할 수 있습니다 (일반적으로 이는 사용자의 도움없이 발생합니다).

    파이썬 3.3 및 이후 버전에서 __new__ 및 __init__을 모두 재정의하는 경우 재정의 할 객체 메소드에 추가 인수를 전달하지 않아야합니다. 이러한 메소드 중 하나만 대체하는 경우 다른 메소드에 추가 인수를 전달할 수 있습니다 (일반적으로 이는 사용자의 도움없이 발생합니다).

    따라서 클래스를 수정하려면 __new__ 메소드를 다음과 같이 변경하십시오.

    def __new__(cls, nom, prenom):
        print("Appel de la méthode __new__ de la classe {}".format(cls))
        return object.__new__(cls) # don't pass extra arguments here!
    
  2. from https://stackoverflow.com/questions/34777773/typeerror-object-takes-no-parameters-after-defining-new by cc-by-sa and MIT license