一只凉不了 发表于 2020-4-30 21:28

为什么在Python中self.bullet_count = 0初始化不起作用

class Gun:
    #定义一个叫做Gun的类
    def __init__(self,model):
      #初始化 model和bullet_cunt这两个形参
      self.model = model
      self.bullet_count = 0
    def add_bullet(self,count):
      # 增加子弹数量并给予形参count 进行计算
      self.bullet_count += count
    def shoot(self):

      # 定义发射方法
      if self.bullet_count <= 0:
            print("没有子弹了")
            return
      self.bullet_count -= 1
      print("%s发射子弹,子弹剩余[%d]"%(self.model,self.bullet_count))
#定义一个叫做qiang的对象
qiang =Gun("ak47")
qiang.add_bullet()
qiang.shoot()

报错如下
line 20, in <module>
    qiang.add_bullet()
TypeError: add_bullet() missing 1 required positional argument: 'count'

我在add方法里加入数值0 就正常 空值就报错

assdqwe123 发表于 2020-4-30 21:37

add_bullet()方法缺少count参数

Deteriorator 发表于 2020-4-30 21:38

缺参数肯定报错

100斤d胖子 发表于 2020-4-30 21:44

qiang =Gun("ak47")
qiang.add_bullet()
倒数第二个函数,你没有传入count值
qiang.add_bullet(1) # count = 1

kesai 发表于 2020-4-30 21:51

add_bullet()没传参数啊,想不传的话需要定义为缺省参数

13593392936 发表于 2020-5-1 12:05

感觉好难学呀

一只凉不了 发表于 2020-5-1 22:20

100斤d胖子 发表于 2020-4-30 21:44
qiang =Gun("ak47")
qiang.add_bullet()
倒数第二个函数,你没有传入count值


我定义初始的参数是0 啊self.bullet_count = 0

100斤d胖子 发表于 2020-5-4 13:59

本帖最后由 100斤d胖子 于 2020-5-4 14:04 编辑

一只凉不了 发表于 2020-5-1 22:20
我定义初始的参数是0 啊self.bullet_count = 0
def __init__():
      self.bullet_count = 0
def add_bullet(self,count): # 形参,调用时必须赋值。不想赋值,需要定义缺省值如(self, count = 1)
      self.bullet_count += count
qiang =Gun("ak47")1
qiang.add_bullet() # 这里调用时必须赋值 qiang.add_bullet(1) 等价于 qiang.add_bullet(count = 1)

ymhld 发表于 2020-5-4 14:31

   def add_bullet(self,count=1):
页: [1]
查看完整版本: 为什么在Python中self.bullet_count = 0初始化不起作用