class Animal:
def eat(self):
print("eat")
def __sleep(self): # __开头的方法是私有的,不能在类定义外面使用,不能被子类调用,但是可以在父类公有方法中调用私有属性或方法,子类就可以间接调用这些私有属性或方法
print("sleep")
def __init__(self):
self.__age=5 #__开头的属性是私有的,不能在类定义外面使用
class Dog(Animal): #Dog 类继承Animal类的全部属性和方法,也有eat() ,__sleep() ,age
def bark(self): #定义一个Dog 才有的Bark属性
print("bark bark ")
class SingleDog(Dog):
def bark(self): #对bark 属性进行重写,不再有父类的bark方法
print("sing sing")
class GodDog(Dog):
def fly(self):
print("fly")
def bark(self): #对bark 属性进行重写, 保留有父类的bark方法
super().bark() # 调用父类的方法
Dog.bark(self) # 同上,老版本py调用父类方法
print("ying ying ") #同时,追加其他的操作
dog=Dog()
dog.bark()
print("-"*50)
single_dog=SingleDog()
single_dog.bark()
print("-"*50)
goddog=GodDog()
goddog.bark()
man=Animal()
# __开头的属性和方法是私有的,不能在类定义外面使用,报错!!
#man.__sleep()
#py 没有严格的私有,可以通过如下方法调用私有属性和方法,不推荐
man._Animal__sleep()