枕思谦 发表于 2021-3-25 21:27:38

父类方法无法调用,求大神解答

代码:import random as r
class Fish:
    def _init_(self):
      self.x=r.randint(0,10)
      self.y=r.randint(0,9)
    def move(self):
         self.x -=1
         print('我的位置是:',self.x,self.y)
    def eat(self):
         print('我要吃饭啦!')
class Goldfish(Fish):
    pass
class Carp(Fish):
    pass
class Salmon(Fish):
    pass
class Shark(Fish):
    def _init_(self):
      Fish._init_(self)
      
执行结果:>>> shark=Shark()
>>> shark.move()
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
    shark.move()
File "C:\Users\xiaoqian\Desktop\爬虫.py", line 7, in move
    self.x -=1
AttributeError: 'Shark' object has no attribute 'x'
>>>         

洋洋痒 发表于 2021-3-25 21:34:09

你把Shark里的__init__重写了,没有写x哪里来的x

枕思谦 发表于 2021-3-25 21:38:41

洋洋痒 发表于 2021-3-25 21:34
你把Shark里的__init__重写了,没有写x哪里来的x

class Shark(Fish):
    def _init_(self):
      Fish._init_(self)
已经重新调用 Fish._init_(self)的方法了啊。
应该怎么改呢

洋洋痒 发表于 2021-3-25 21:39:40

class Shark(Fish):
    def _init_(self):
      Fish._init_(self)
      super().__init__()

洋洋痒 发表于 2021-3-25 21:40:11

枕思谦 发表于 2021-3-25 21:38
class Shark(Fish):
    def _init_(self):
      Fish._init_(self)


额,我看错了

洋洋痒 发表于 2021-3-25 21:40:45

去掉self

枕思谦 发表于 2021-3-25 21:41:58

洋洋痒 发表于 2021-3-25 21:39
class Shark(Fish):
    def _init_(self):
      Fish._init_(self)


还是不对

逃兵 发表于 2021-3-25 21:44:47

本帖最后由 逃兵 于 2021-3-26 09:19 编辑

__init__(self)

两个下划线

import random as r
class Fish:
    def __init__(self):
      self.x=r.randint(0,10)
      self.y=r.randint(0,9)
    def move(self):
         self.x -=1
         print('我的位置是:',self.x,self.y)
    def eat(self):
         print('我要吃饭啦!')
class Goldfish(Fish):
    pass
class Carp(Fish):
    pass
class Salmon(Fish):
    pass
class Shark(Fish):
    def __init__(self):
      Fish.__init__(self)

洋洋痒 发表于 2021-3-25 21:44:52

好久没用python记不清了,抱歉
是你的init方法少了个_
是__init__
Fish和Shark都是少了

洋洋痒 发表于 2021-3-25 21:45:39

前后各加个_其他按照你的代码不需要改动就可以了
页: [1]
查看完整版本: 父类方法无法调用,求大神解答