我上课怎么了?

时间:2013-09-03 11:32:02

标签: python python-3.x

我正在尝试为动物创建一个类,并设置Dog()来打印狗会有什么特征,但我不确定该怎么做,或者我哪里出错了?
我只写了大约半小时的课程,这就是为什么我不是很好,提前谢谢!这是我的代码!

class Animal:
    def __init__(self, animal, name, bark):
        self.animal = animal
        self.name = name
        self.bark = bark
    def Dog(self):
        self.bark = 'Woof!'
        self.animal = 'dog'
        print('A {} goes {}'.format(self.animal, self.bark))

d1 = Animal()
print(d1.dog())

2 个答案:

答案 0 :(得分:4)

  • 你的Animal()类需要3个参数来初始化,你传递的没有。
  • 您将方法命名为.Dog()(使用大写D),但尝试调用.dog()(全部小写)。

两者都很容易纠正:

d1 = Animal('dog', 'Fido', 'woof!')
d1.Dog()

您没有拥有来为您的类命名属性作为__init__函数的参数。例如,Dog()方法会覆盖任何属性集,那么为什么要首先在__init__中设置它们?

答案 1 :(得分:2)

我不明白为什么你的Animal - 类有Dog - 方法。你不想用这个来学习继承吗?它看起来像编程新手的典型任务。也许是这样的

class Animal:
    def __init__(self, animal, name, bark):
        self.animal = animal
        self.name = name
        self.bark = bark

    def say(self):
        print('A {} goes {}'.format(self.animal, self.bark))

class Dog(Animal):
    def __init__(self):
        Animal.__init__(self, "dog", "", "Woof!")

class Cat(Animal):
    def __init__(self):
        Animal.__init__(self, "cat", "", "Miao!")        


d1 = Dog()
d1.say()

c1 = Cat()
c1.say()

会给你

A dog goes Woof!
A cat goes Miao!