四、Python三大特性:封装、继承、多态

1.Python三大特性:封装、继承、多态

1.1 封装

a. 隐藏对象的属性和实现细节,仅对外提供公共访问的方式
b. 封装原则==1.将不需要对外提供的内容隐藏起来2.把属性都隐藏,提供共公共方法对其访问;

1.2 继承

a. 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类;
b. 继承分为单继承和多继承,其中多继承以逗号分割;#__base__只查看从左到右继承的第一个子类,__bases__则是查看所有继承的父类;
c. 继承是基于抽象的结果,抽象就是抽取事物的相似之处或者说是比较像的一部分;通过编程语言的实现,肯定先经历抽象,再通过继承的方式表达出抽象的结构;
d. 重用性–子类继承父类后,可以直接使用父类的全部属性(数据属性和函数属性),实现代码层面的重用;
e. 派生–子类重新定义自己的属性与父类属性命名相同,故子类调用新增属性时以子类为准;

1.3 多态

a. 同一类事物多种形态
b. 不同的对象调用同一个函数,产生的不同的行为。老师.下课铃响了()===下班;学生.下课铃响了()===放学啦

#封装
class Animal:
    def __init__(self):
        self.__name = 'tom' # 私有属性
        self.age = 3
    def __get_name(self):  # 私有方法
        print('name is {:}'.format(self.__name))

    def get_age(self):  # 普通方法可以调用私有属性和方法
        print('{:} age is {:} year'.format(self.__name, self.age))

# 实例化
cat = Animal()
# 调用私有属性
cat.get_age()
# 调用私有方法
cat._Animal__get_name()

# 继承
class Person:
    def __init__(self, name):
        self.name = name

    def say_name(self):
        print("name is {:}".format(self.name))

class Student(Person):
    def __init__(self, name, age):
        Person.__init__(self,name)
        self.age = age


s1 = Student('zhangsan',24)
s1.say_name()


# 多态
import abc
class Animals(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def talk(self):
        pass
    
class Peopel(Animals):
    def talk(self):
        print("say hello")
        
class Dog(Animals):
    def talk(self):
        print("wangwang")

class Pig(Animals):
    def talk(self):
        print('hengheng')
        
dog = Dog()
dog.talk()

参考资料:

https://www.cnblogs.com/peng104/p/9550305.html

https://www.jianshu.com/p/b04c6b0759a9

你可能感兴趣的:(Python,python)