在 Python 3 中练习继承时抛出错误

Error is thrown while practicing Inheritance in Python 3

当我执行时,它抛出错误:

 ....
  ......
    class Dog(Pet):
  File "D:\untitled2\Pet.py", line 13, in Dog
    Dog.numberoflegs = 4
NameError: name 'Dog' is not defined
Fish.numberoflegs = 0
NameError: name 'Fish' is not defined

请帮忙

class Pet:
    numberoflegs = 0
    def sleep(self,name):
        print("the {} sleeps".format(name))
    def countlegs(self):
        print("I have {} legs".format(self.numberoflegs))


#type = input("enter pet type")
#dog.sleep(type)

class Dog(Pet):
    Dog.numberoflegs = 4
    def bark(self):
        print ("the dog sounds woof")

class Fish(Pet):
    Fish.numberoflegs = 0


kuta = Dog()
kuta.countlegs()
kuta.bark()
machi = Fish()
machi.countlegs()

Class 属性只是添加到 class - 没有前缀 class 名称:

class Dog(Pet):
    numberoflegs = 4
    # etc

class Fish(Pet):
    numberoflegs = 0

您可以使用 Dog.numberoflegs = 3 更改它(如果默认情况下您有 3 条腿的狗)。

Class属性在所有实例之间共享。

您可以这样定义您的 class Dog

class Dog(Pet):
    numberoflegs = 4
    def bark(self):
        print ("the dog sounds woof")

你的class属性numberoflegs不需要Dog.

您收到错误是因为您试图在 "creation" 时间使用 class,甚至在 Dog class

之前

变化:

class Dog(Pet):
    Dog.numberoflegs = 4

至:

class Dog(Pet):
    numberoflegs = 4

它已经具有 class 的范围,您还不能按名称引用 class,因为它仍在定义中。