| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
class Person:#定义一个人类 
    def __init__(self,name,gun):#定义默认属性 
        self.name=name 
        self.gun=gun 
    def fire(self):#定义开火动作 
        ak.shout() 
        print(ak.count) 
        ak.add_zidan() 
        print(ak.count) 
class Gun:#d定义一个枪类 
    def __init__(self,name,count):#定义枪属性 
        self.name=name 
        self.count=count 
    def shout(self):#定义枪的击发 
        if self.count==0: 
            print('需要换弹夹') 
        else: 
            self.count=0 
    def add_zidan(self):#定义换弹夹 
        self.count=30 
 
ak=Gun('AK',0) 
soldiers=Person('许三多',a.name) 
print(soldiers.fire()) 
 
 
 
以下是输出结果!,请大神指导一下为什么会多个None!谢谢! 
需要换弹夹 
0 
30 
None
因为 Person.fire() 方法没有返回值,所以隐式地返回 None,打印 soldiers.fire() 的返回值就是打印 None。 
解决办法:将 print() 去掉即可
  
- class Person:#定义一个人类
 
 -     def __init__(self,name,gun):#定义默认属性
 
 -         self.name=name
 
 -         self.gun=gun
 
 -     def fire(self):#定义开火动作
 
 -         ak.shout()
 
 -         print(ak.count)
 
 -         ak.add_zidan()
 
 -         print(ak.count)
 
 - class Gun:#d定义一个枪类
 
 -     def __init__(self,name,count):#定义枪属性
 
 -         self.name=name
 
 -         self.count=count
 
 -     def shout(self):#定义枪的击发
 
 -         if self.count==0:
 
 -             print('需要换弹夹')
 
 -         else:
 
 -             self.count=0
 
 -     def add_zidan(self):#定义换弹夹
 
 -         self.count=30
 
  
- ak=Gun('AK',0)
 
 - soldiers=Person('许三多',a.name)
 
 - soldiers.fire()
 
  复制代码 
 
 
 
 |   
 
 
 
 |