鱼C论坛

 找回密码
 立即注册
查看: 1204|回复: 4

[已解决]书上第11章,11.6 组合

[复制链接]
发表于 2022-5-4 16:40:32 | 显示全部楼层 |阅读模式

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

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

x
class Turtle:
    def __init__(self, x):
        self.num = x
class Fish:
    def __init__(self, x):
        self.num = x
class Pool:
    def __init__(self, x, y):
        self.turtle = Turtle(x)
        self.fish = Fish(y)
        
def print_num(self):
    print('水池里共有乌龟 %d 只,小鱼 %d 条' % (self.turtle, self.fish))
   
pool = Pool(1, 10)
pool.print_num()

按照书上敲的代码,但是最后结果报错:
AttributeError: 'Pool' object has no attribute 'print_num'
最佳答案
2022-5-4 17:25:56


问题1:你 print_num 方法没放入 Pool 类中,导致调用此方法报错,将缩进打上即可

问题2:Pool 类中的 self.turtle 和 self.fish 的赋值为 Turtle(x),Fish(y) 均为实例对象,而 print_num 格式化打印时候,应该打印 self.turtle.num 和 self.fish.num

参考代码:
class Turtle:
    def __init__(self, x):
        self.num = x


class Fish:
    def __init__(self, x):
        self.num = x


class Pool:
    def __init__(self, x, y):
        self.turtle = Turtle(x)
        self.fish = Fish(y)


    def print_num(self):
        print('水池里共有乌龟 %d 只,小鱼 %d 条' % (self.turtle.num, self.fish.num))


pool = Pool(1, 10)
pool.print_num()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-4 17:07:26 | 显示全部楼层
class Turtle:
    def __init__(self, x):
        self.num = x
class Fish:
    def __init__(self, x):
        self.num = x
class Pool:
    def __init__(self, x, y):
        self.turtle = Turtle(x)
        self.fish = Fish(y)
        
    def print_num(self):
        print('水池里共有乌龟 %d 只,小鱼 %d 条' % (self.turtle, self.fish)) #改了这里,你这里缩进不对!
   
pool = Pool(1, 10)
pool.print_num()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-4 17:25:56 | 显示全部楼层    本楼为最佳答案   


问题1:你 print_num 方法没放入 Pool 类中,导致调用此方法报错,将缩进打上即可

问题2:Pool 类中的 self.turtle 和 self.fish 的赋值为 Turtle(x),Fish(y) 均为实例对象,而 print_num 格式化打印时候,应该打印 self.turtle.num 和 self.fish.num

参考代码:
class Turtle:
    def __init__(self, x):
        self.num = x


class Fish:
    def __init__(self, x):
        self.num = x


class Pool:
    def __init__(self, x, y):
        self.turtle = Turtle(x)
        self.fish = Fish(y)


    def print_num(self):
        print('水池里共有乌龟 %d 只,小鱼 %d 条' % (self.turtle.num, self.fish.num))


pool = Pool(1, 10)
pool.print_num()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-4 17:30:00 | 显示全部楼层


非常感谢!改了的那行,self.turtle, self.fish这两个后边还要加.num
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-4 17:31:45 | 显示全部楼层
Twilight6 发表于 2022-5-4 17:25
问题1:你 print_num 方法没放入 Pool 类中,导致调用此方法报错,将缩进打上即可

问题2:Pool 类中 ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 12:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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