鱼C论坛

 找回密码
 立即注册
查看: 1433|回复: 9

[已解决]父类方法无法调用,求大神解答

[复制链接]
发表于 2021-3-25 21:27:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码: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:44:52
好久没用python记不清了,抱歉
是你的init方法少了个_  
是__init__
Fish和Shark都是少了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-25 21:34:09 | 显示全部楼层
你把Shark里的__init__重写了,没有写x哪里来的x
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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)的方法了啊。
应该怎么改呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-25 21:39:40 | 显示全部楼层
class Shark(Fish):
    def _init_(self):
        Fish._init_(self)
        super().__init__()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-25 21:40:11 | 显示全部楼层
枕思谦 发表于 2021-3-25 21:38
class Shark(Fish):
    def _init_(self):
        Fish._init_(self)

额,我看错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-25 21:40:45 | 显示全部楼层
去掉self
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-25 21:41:58 | 显示全部楼层
洋洋痒 发表于 2021-3-25 21:39
class Shark(Fish):
    def _init_(self):
        Fish._init_(self)

还是不对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-25 21:44:47 | 显示全部楼层
本帖最后由 逃兵 于 2021-3-26 09:19 编辑

__init__(self)

两个下划线

  1. import random as r
  2. class Fish:
  3.     def __init__(self):
  4.         self.x=r.randint(0,10)
  5.         self.y=r.randint(0,9)
  6.     def move(self):
  7.          self.x -=1
  8.          print('我的位置是:',self.x,self.y)
  9.     def eat(self):
  10.          print('我要吃饭啦!')
  11. class Goldfish(Fish):
  12.     pass
  13. class Carp(Fish):
  14.     pass
  15. class Salmon(Fish):
  16.     pass
  17. class Shark(Fish):
  18.     def __init__(self):
  19.         Fish.__init__(self)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-3-25 21:44:52 | 显示全部楼层    本楼为最佳答案   
好久没用python记不清了,抱歉
是你的init方法少了个_  
是__init__
Fish和Shark都是少了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-25 21:45:39 | 显示全部楼层
前后各加个_其他按照你的代码不需要改动就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-4 12:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表