Python 我给我的函数提供什么论据(当我似乎不…)

Python 我给我的函数提供什么论据(当我似乎不…),python,python-3.x,Python,Python 3.x,它给出了一个错误: class User: def sign_in(): print('logged in') class Wizard(User): def __init__(self, name, power, damage): self.name = name self.power = power self.damage = damage def attack(): print(f'

它给出了一个错误:

class User:
    def sign_in():
        print('logged in')

class Wizard(User):
    def __init__(self, name, power, damage):
        self.name = name
        self.power = power
        self.damage = damage

    def attack():
        print(f'attacking with {self.power} inflicting {self.damage}')

class Archer(User):
    def __init__(self, name, bow, damage, arrows_left):
        self.name = name
        self.bow = bow
        self.damage = damage
        self.arrows_left = arrows_left

    def attack():
        print(f'{self.name} attacking with {self.bow} inflicting {self.damage}, arrows left: {self.arrows_left}')
        #self.arrows_left -= 1
        #print (self.arrows_left)


archer1 = Archer('Robin', 'longbow', '50', 50)
archer1.attack() 
我应该向这个函数传递什么参数


还有更多:我希望每次调用archer.attack()-怎么做?

self
不是一个关键字时都能更新archers arrows;它是实例方法所需的第一个参数的常规名称

TypeError: attack() takes 0 positional arguments but 1 was given

self
不是关键字;它是实例方法所需的第一个参数的常规名称

TypeError: attack() takes 0 positional arguments but 1 was given

我想您忘记了代码中的下划线。 但是你的代码现在显示的方式非常混乱

def attack(self):
    print(f'{self.name} attacking with {self.bow} inflicting {self.damage}, arrows left: {self.arrows_left}') 

我想您忘记了代码中的下划线。 但是你的代码现在显示的方式非常混乱

def attack(self):
    print(f'{self.name} attacking with {self.bow} inflicting {self.damage}, arrows left: {self.arrows_left}') 

请修复代码缩进-这在Python中至关重要。此外,类成员函数的第一个参数通常名为
self
,因此您可以访问它。@iBug更具体地说,名称并不重要,但需要定义一个参数。请修复代码缩进-这在Python中至关重要。此外,类成员函数的第一个参数通常名为
self
,因此您可以访问它。@iBug更具体地说,名称无关紧要,但需要定义一个参数。