Python面向对象(三)
1.property装饰器
-
在类中使用,将类中的方法伪装成一个属性
-
函数的嵌套、 内部函数需要使用到外部函数的变量、 外部函数返回内部函数的函数对象
class Student:
def __init__(self, name):
self.__name = name
@property
def name(self):
return self.__name
@name.setter # 设置,修改(自我理解)
def name(self, new_name):
if type(new_name) is str: # 只有当修改的值为str类型,才能被修改
self.__name = new_name
a1 = Student("诸葛")
print(a1.name) # 诸葛
a1.name = "大力"
print(a1.name) # 大力
a1.name = 123
print(a1.name) # 大力
2.多态
就相当于是一个类,它有多种表现得形态,动物类:有人,猪,狗
class Animal:
def run(self): # 子类约定俗称的必须实现这个方法
pass
class People(Animal):
def run(self):
print('人正在走')
class Pig(Animal):
def run(self):
print('pig is walking')
class Dog(Animal):
def run(self):
print('dog is running')
peo1 = People()
pig1 = Pig()
d1 = Dog()
peo1.run()
pig1.run()
d1.run()
3.继承
-
封装:根据职责将属性和方法封装到一个抽象的类中
-
继承:实现代买的重用 相同的代码不需要重复的写
-
继承具有传递性
-
当父类方法不能满足子类的需求的时候
-
可以对方法进行重写
1.覆盖父类方法
2.对父类的方法进行扩展
-
class Animal:
def eat(self):
print('吃。。。')
def sleep(self):
print('睡觉')
class Dog(Animal):
def bark(self):
print('汪汪汪')
class Cat(Animal):
def climb_tree(self):
print('爬树。。')
dog = Dog()
dog.eat()
dog.sleep()
dog.bark()
cat = Cat()
cat.eat()
cat.sleep()
cat.climb_tree()
输出结果:
吃。。。
睡觉
汪汪汪
吃。。。
睡觉
爬树。。
Process finished with exit code 0