Python面向对象(三)

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
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页