在Python 3中练习继承时引发错误
当我执行时,它抛出错误:在Python 3中练习继承时引发错误,python,inheritance,parent-child,Python,Inheritance,Parent Child,当我执行时,它抛出错误: .... ...... 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 =
....
......
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 Dog(Pet):
numberoflegs = 4
# etc
class Fish(Pet):
numberoflegs = 0
您可以使用Dog.numberoflegs=3
更改它(如果默认情况下您有三条腿的狗)
类属性在所有实例之间共享
看
- 对于一些造型技巧-您的命名约定与建议的有很大不同
class Dog(Pet):
numberoflegs = 4
# etc
class Fish(Pet):
numberoflegs = 0
您可以使用Dog.numberoflegs=3
更改它(如果默认情况下您有三条腿的狗)
类属性在所有实例之间共享
看
- 对于一些造型技巧-您的命名约定与建议的有很大不同
狗
:
class Dog(Pet):
numberoflegs = 4
def bark(self):
print ("the dog sounds woof")
您的类属性numberoflegs
不需要狗。
您之所以会出现错误,是因为您试图在“创建”时使用该类,甚至在使用
Dog
class之前,您可以通过以下方式定义您的类Dog
:
class Dog(Pet):
numberoflegs = 4
def bark(self):
print ("the dog sounds woof")
您的类属性numberoflegs
不需要狗。
出现错误是因为您试图在“创建”时使用该类,甚至在更改狗类之前:
class Dog(Pet):
Dog.numberoflegs = 4
致:
它已经具有类的作用域,您还不能按名称引用该类,因为它仍在定义中。更改:
class Dog(Pet):
Dog.numberoflegs = 4
致:
它已经具有类的范围,您还不能按名称引用该类,因为它仍在定义中。非常感谢您花时间进行如此详细的解释!:)我刚刚开始学习使用Python3.7开发web应用程序。你能推荐一些更好的教程吗?因为我现在正在学习的教程有你注意到的问题。我只是尝试为每个动物使用单独的文件来运行我的上述代码,在同一个项目目录中继承动物超类。现在它不会抛出任何异常。但是,运行包含kuta=Dog()kuta.countlegs()kuta.bark()machi=Fish()machi.countlegs()
@kederr的mian.py没有显示出我所期望的输出,-1答案中有+130/+145级副本的内部链接。但是你当然是对的-将链接改为直接链接而不是间接链接非常感谢你花时间做了如此详细的解释!:)我刚刚开始学习使用Python3.7开发web应用程序。你能推荐一些更好的教程吗?因为我现在正在学习的教程有你注意到的问题。我只是尝试为每个动物使用单独的文件来运行我的上述代码,在同一个项目目录中继承动物超类。现在它不会抛出任何异常。但是,运行包含kuta=Dog()kuta.countlegs()kuta.bark()machi=Fish()machi.countlegs()
@kederr的mian.py没有显示出我所期望的输出,-1答案中有+130/+145级副本的内部链接。但你当然是对的——将链接改为直接链接,而不是间接链接