문제
나는 Python을 처음 사용합니다. 수업에서 간단한 기능을 정의하고 실행하려고했습니다.
누구든지 내 코드에서 무엇이 잘못되었는지 말해 줄 수 있습니까?
class A :
def m1(name,age,address) :
print('Name -->',name)
print('Age -->',age)
print('Address -->',address)
>>> a = A()
>>> a.m1('X',12,'XXXX')
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
a.m1('X',12,'XXXX')
오류 가하로 받고 있습니다
TypeError : M1 ()은 정확히 3 개의 위치 인수를 취합니다 (4 주어짐)
해결책
인스턴스 메소드 인스턴스를 첫 번째 인수로 취합니다.
class A :
def m1(self, name,age,address) :
print('Name -->',name)
print('Age -->',age)
print('Address -->',address)
당신은 또한 사용할 수 있습니다 @StaticMethod 데코레이터 정적 기능을 만들려면 :
class A :
@staticmethod
def m1(name,age,address) :
print('Name -->',name)
print('Age -->',age)
print('Address -->',address)
다른 팁
첫 번째 매개 변수는 항상 객체 자체입니다.
class A :
def m1(self, name,age,address) :
print('Name -->',name)
print('Age -->',age)
print('Address -->',address)
컨벤션별로 클래스 인스턴스의 메소드는 이름이 지정된 첫 번째 인수로 객체 참조를받습니다. self
.
>>> class A:
... def m1(self,name,age,address):
... print('Name -->',name)
... print('Age -->',age)
... print('Address -->',address)
...
>>> a=A()
>>> a.m1('X',12,'XXXX')
('Name -->', 'X')
('Age -->', 12)
('Address -->', 'XXXX')
>>>
제휴하지 않습니다 StackOverflow