wwj520 发表于 2021-4-21 00:11:52

救命啊大佬们,为什么是这个错误

import random as r
class Turtul :
    def _init_(self,x,y) :
      self.x=0
      self.y=0
    def position(self) :
      self.x=r.randint(0,10)
      self.y=r.randint(0,10)
    def move(self) :
      self.x +=1
      self.y +=1
      print('现在本乌龟跑到了这里',(self.x,self.y))

class Fish :
    def _init_(self,x,y) :
      self.x=0
      self.y=0
    def position1(self):
      self.x=r.randint(0,10)
      self.y=r.randint(0,10)
    def move(self) :
      self.x +=1
      self.y +=1

class Nihao :
    def _init_(self,x,y) :
      self.turtul=Turtul(x,y)
      self.fish=Fish(x,y)
    def miss(self) :
      if (self.fish.x,self.fish.y) != (self.turtul.x,self.turtul.y) :
            a=True
            b=10
            while a :
                b -= 1
                if b>0 :
                  self.turtul.position()
                  self.turtul.move()
                else :
                  print('完了,完了,没能量了。。。。')
                  break
      else :
            print('我们在这里相遇')
            


v=Nihao()
v.miss()


#错误:
      Traceback (most recent call last):
File "D:/python(学习站)/d.py", line 48, in <module>
    v.miss()
File "D:/python(学习站)/d.py", line 30, in miss
    if (self.fish.x,self.fish.y) != (self.turtul.x,self.turtul.y) :
AttributeError: 'Nihao' object has no attribute 'fish'

linke.zhanghu 发表于 2021-4-21 01:37:10

大哥,我要提醒你一下 在class中的 __init__()方法是双下划线而不是单下划线
你所有的类都是如此 把你的 _init_ 改成__init__就好了

当然你的程序也有其他的问题.比方说 v=Nihao() 这里 你在定义Nihao这个类的__init__()方法时,需要传入 x 和 y 这两个参数,但是实际上你都没传
所以在创建 v 这个对象的时候就会报错 需要你传参 还有就是
因为你没传参数,所以会导致你在
self.turtul=Turtul(x,y)
self.fish=Fish(x,y)
这里也会报错,因为你没有传x 和 y 所有也就没法创建 self.turtul 和 self.fish 这两个对象
页: [1]
查看完整版本: 救命啊大佬们,为什么是这个错误