Python类没有属性错误

 朱仔happy 发布于 2023-01-14 15:48
  • php
  • 这可能是很明显的事情,但是我尝试了所有我能想到的事情,并在这里进行了很多研究,而我仍然陷入困境。

    我一直在学习LearnPythonTheHardWay课程,目前在第42章,我一直在那里学习代码并添加一些内容:

    http://learnpythonthehardway.org/book/ex42.html

    我添加了一些要为“狗”和“猫”打印的功能和东西,当我仅使用狗的打印命令(barks_often和wags_tail)运行它时,它运行正常,当我尝试使用猫的打印命令进行打印时名称很好,但是只要我为'drinks_milk'添加一个,就会出现此错误:

        PS C:\Users\David\python\lpthw> python ex42_more.py
    Rover is a Dog
    Rover barks often: True
    Rover wags his tail: True
    Satan is a Cat
    Traceback (most recent call last):
      File "ex42_more.py", line 123, in 
        print "%s drinks milk: %s" % (satan.getName(), satan.dri
    AttributeError: 'Cat' object has no attribute 'drinksMilk'
    

    我添加'drinks_milk'的操作与我对狗所做的操作完全相同,所以我不明白为什么它不起作用,我尝试将其重命名为其他东西,但是没有起作用。

    这是我的代码:

    ## Animal is-a object (yes, sort of confusing) look at the extra credit
    class Animal(object):
        def __init__(self, name, species):
            self.name = name
            self.species = species
    
        def getName(self):
            return self.name
    
        def getSpecies(self):
            return self.species
    
    
    
    ## class name Dog is-a animal
    class Dog(Animal):
    
        def __init__(self, name, barks_often, wags_tail):
            Animal.__init__(self, name, "Dog")
            self.barks_often = barks_often
            self.wags_tail = wags_tail
    
    
        def barksOften(self):
            return self.barks_often
    
        def wagsTail(self):
            return self.wags_tail
    
    
    
    
    ## class Cat is-a animal
    class Cat(Animal):
    
        def __init__(self, name, drinks_milk):
            Animal.__init__(self, name, "Cat")
            self.drinks_milk = drinks_milk
    
    
            def drinksMilk(self):
                return self.drinks_milk
    ## rover is-a Dog
    rover = Dog("Rover", True, True)
    
    ## satan is-a Cat
    satan = Cat("Satan", True)
    
    print "%s is a %s" % (rover.getName(), rover.getSpecies())
    
    print "%s barks often: %s" % (rover.getName(), rover.barksOften())
    
    print "%s wags his tail: %s" % (rover.getName(), rover.wagsTail())
    
    print "%s is a %s" % (satan.getName(), satan.getSpecies())
    
    print "%s drinks milk: %s" % (satan.getName(), satan.drinksMilk())
    

    我感觉这是一个缩进问题,您会发现缩进的问题def drinksMilk(self):比其他缩进的要多,但这是因为当我将它放在正常位置并与上面的其他def一致时,我运行了它给出的代码我的'IndentationError: unindent does not match any outer indentation level'错误,我不知道为什么...

    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    热门标签
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有