在Python 3中练习继承时引发错误

2024-09-29 06:28:00 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

Tags: nameselfisdeftypenotclassprint
3条回答

您可以用以下方式定义类Dog

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

您的类属性numberoflegs不需要Dog.

出现错误是因为您试图在“创建”时使用该类,甚至在使用Dog类之前

更改:

class Dog(Pet):
    Dog.numberoflegs = 4

致:

class Dog(Pet):
    numberoflegs = 4

它已经具有类的作用域,您还不能通过名称引用该类,因为它仍在定义中

类属性只是添加到类中,而不是以类名作为前缀:

class Dog(Pet):
    numberoflegs = 4
    # etc

class Fish(Pet):
    numberoflegs = 0

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

类属性在所有实例之间共享

相关问题 更多 >