[PYTHON] TypeError : object ()는 __new__을 정의한 후에 매개 변수를 사용하지 않습니다.
PYTHONTypeError : 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.파이썬 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!
from https://stackoverflow.com/questions/34777773/typeerror-object-takes-no-parameters-after-defining-new by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] Django 템플릿에서 Humanize를 사용하여 "x 일 전"유형 시간을 표시하는 방법은 무엇입니까? (0) | 2018.11.09 |
---|---|
[PYTHON] 함수 호출 세부 정보를 출력하는 데코레이터 - 매개 변수 이름과 유효 값 (0) | 2018.11.09 |
[PYTHON] NLTK와 scikit-learn에서 텍스트 형태소 분석과 구두점 제거를 결합 (0) | 2018.11.09 |
[PYTHON] 컨텍스트 관리자를 사용할 때 개체가 없음이됩니다. (0) | 2018.11.09 |
[PYTHON] 파이썬을 사용하여 csv 파일을 SQL Server 데이터베이스에 작성하기 (0) | 2018.11.09 |