在 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属性在所有实例之间共享。
见
- What is the difference between class and instance attributes?
- https://www.python.org/dev/peps/pep-0008/ 一些样式提示 - 您的命名约定与建议的有很大不同
您可以这样定义您的 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,因为它仍在定义中。
当我执行时,它抛出错误:
....
......
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属性在所有实例之间共享。
见
- What is the difference between class and instance attributes?
- https://www.python.org/dev/peps/pep-0008/ 一些样式提示 - 您的命名约定与建议的有很大不同
您可以这样定义您的 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,因为它仍在定义中。