2016-10-23 3 views
-3
class Player: 
    def __init__(self): 
     self.speed 
     self.hp 
def Berserker(self): 
    self.speed == 12 
    self.hp == 6 

print("Berserkers stats are: " + Berserker()) 

그래서 내가 잘못 했습니까? 보시다시피, 저는 Python을 처음 접했습니다. 오류 : TypeError : Berserker()가 1 개의 필수 위치 인수 인 'self'가 누락되었습니다.내 코드에서 어디가 잘못 되었습니까?

+2

'__init__'은 뭐든지. 또한 클래스를 인스턴스화하려고 할 때'AttributeError'를 던질 것입니다. 기본 파이썬 튜토리얼을 시작한 다음 OOP로 이동해야합니다. –

+1

그리고'Berserker' 메쏘드는 클래스에 들여 쓰기가 적절하지 않으므로 인스턴스 메쏘드처럼 다루어지는 것이 아니라 함수입니다. – idjaw

+1

berserker가 하위 클래스 또는 사람의 인스턴스가되는 것을 의미합니까? 왜냐하면 그건 당신이 쓴 것이 전부가 아니기 때문입니다. – jonrsharpe

답변

1

많은 것들이 누락되었지만 도와 드리겠습니다!

__init__ 함수는 아무 것도하지 않습니다. 기본 통계를 알려 드리겠습니다. 나는 Player의 기본 속도와 상태가 각각 10과 100이라고 말할 것이다. 그런 다음 Berserker서브 클래스Player으로 만들 것입니다. 마지막으로 Player에 값에 대한 문자열 형식의 출력을 얻을 수있는 메서드를 제공 할 것입니다.

첫째, 새로운 Player 다음 Berserker 이제

class Player: 
    def __init__(self, speed=10, health=100): 
     self.speed = speed 
     self.health = health 

    def __str__(self): 
     return "A player with speed {} and health {}.".format(self.speed, self.health) 

합니다. 나는 그것을 85의베이스 (15)의 속도와 건강을 줄 것이다 (물론 세부 사항은 당신에게 달려있다!)

class Berserker(Player): 
    def __init__(self): 
     super().__init__(speed=15, health=85) 

마지막으로, 우리는이를 만들고 값을 인쇄 할 수 있습니다. 몇 가지 다른 버전을 만들어서 어떻게 작동하는지 볼 수 있습니다. (그리고 이것을 위해 일반 파이썬 인터프리터를 사용합니다).

>>> p1 = Player() 
>>> p2 = Player(7, 120) 
>>> b = Berserker() 
>>> print(p1) 
A player with speed 10 and health 100. 
>>> print(p2) 
A player with speed 7 and health 120. 
>>> print(b) 
A player with speed 15 and health 85. 

이렇게하면 시작할 수 있기를 바랍니다.

1

당신은했다가 실수 한 무리의 :

  • 들여 쓰기 파이썬에서
  • Assignement가 하나 인 클래스 "="하지와의 일부가 될 당신의 버서커 방법 "=="(대부분의 프로그래밍과 같은 실제로는 언어)
  • 속도와 hp 초기 값을 주거나, 생성자에 넣지 마십시오. 파이썬 변수에는 값이 할당 될 때 만들어집니다.
  • 이 클래스의 인스턴스를 만들고 그것을 인쇄 할 수
  • 는 버서커 방법은 문자열을 반환합니다

당신 코드의 작업 버전은 다음과 같이해야한다 : 이제

class Player: 
    def __init__(self): 
     self.speed = 0 
     self.hp = 0 
    def Berserker(self): 
     self.speed = 12 
     self.hp = 6 
     return "speed {} hp {}".format(self.speed,self.hp) 
m = Player() 
print("Berserkers stats are: " + m.Berserker()) 

그게 작동 버전이지만 여전히 IMO가 제대로 설계되지 않았다면, 이것은 더 좋습니다 :

class Player: 
    def __init__(self): 
     self.speed = 0 
     self.hp = 0 
    def Berserker(self): 
     self.speed = 12 
     self.hp = 6 
    def __str__(self): 
     return "speed {} hp {}".format(self.speed,self.hp) 
m = Player() 
m.Berserker() 
print(m) 
관련 문제