0

動物のクラスを作成しようとしてDog()いて、犬の特徴を印刷するように設定していますが、何をすべきか、またはどこが間違っているのかよくわかりません。
私はクラスを約30分しか書いていないので、あまり上手ではありません。よろしくお願いします!これが私のコードです!

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())
4

2 に答える 2

4
  • あなたのAnimal()クラスは初期化するために 3 つの引数を必要としますが、何も渡しませんでした。
  • メソッド.Dog()に (大文字でD) 名前を付けましたが、呼び出しようとしました.dog()(すべて小文字)。

どちらも簡単に修正できます。

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

関数へのパラメーターとして、クラスの属性に名前を付ける必要もありませ__init__Dog()たとえば、このメソッドは設定された属性をオーバーライドします__init__が、そもそも属性を設定するように要求する必要はありません。

于 2013-09-03T11:33:27.077 に答える
2

-class に-methodAnimalがある理由がわかりません。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!
于 2013-09-03T11:43:56.480 に答える