python类

>>> class bird:
def __init__(self):
self.hungry=True
def eat(self):
if self.hungry:
print('aaa')
self.hungry=False
else:
print('thanks')



>>> b=bird()
>>> b.eat()
aaa
>>> b.eat()
thanks

>>> 从这里看到的几个问题,一个是init初始化,需要有self参数。第二个是实例化之后,引用的内容会发生变化。

如果构造一个子类songbird

>>> class songbird(bird):
def __init__(self):
self.sound='squawk'
def sing(self):
print(self.sound)



>>> sb=songbird()
>>> sb.sing()
squawk
>>> 我们看到没什么问题,但是如果引用超类中的eat会怎么样?

AttributeError: 'songbird' object has no attribute 'hungry' 没有属性hungry,这是为什么?难道继承不了吗?

为了解决这个问题,先给出正确代码:

>>> class songbird(bird):
def __init__(self):
bird.__init__(self)
self.sound='squawk'
def sing(self):
print(self.sound)

在songbird的初始化中,将父类的init再写一次:bird.__init__(self)

你可能感兴趣的:(python类)