一.封装

类似于模板,把事物共有的特征和行为进行打包,然后创建出来的对象就会具有这些特征和行为。

1.封装数据的主要原因是:保护隐私 和 隔离复杂度

2.类的结构

class 类名(object):           #类名的命名规则:大驼峰命名法(每个单词首字母大写,单词之间没有下划线)

    #类属性
    属性名 = 值

    #类方法
    @classmethod    #声明下面的方法属于类方法
    def 方法名(cls):
        pass

    #静态方法
    @staticmethod   #声明下面的方法属于静态方法
    def 方法名():    #静态方法不需要参数传递,所以只有一个括号()

        pass

     # 实例属性
     def __init__(self):  # 初始化

        pass

     # 实例方法
    def 实例方法名(self):

        pass
	 # 实例方法(__call__)
    def __call__(self):

        pass


#调用类属性、类方法和静态方法
类名.属性名()
类名.方法名()
类名.静态方法名()


#调用实例属性和方法
#首先创建实例(创建对象)
对象名 = 类名()      #括号中传递实参
对象名.属性名()
对象名.方法名()      #括号中传递实参
对象名()		#可以直接调用call方法,括号中传递实参

二.继承

1.单继承:继承一个父类

class A(object):
        pass

    class B(A):
        pass

重写(Overside):子类继承父类,父类中的方法不能满足子类要求时,对父类中的方法进行重写。(方法名相同,才叫重写)
super():对父类中的方法进行重写后,要是还想调用,此时就用super

2.私有属性和私有方法
就是在想要私有的属性和方法前面加__,这样外部就访问不到了。要想访问就必须提供对外的访问接口。
注意:
前后两个下划线:内置方法
前面一个下划线:from 模块名 import * 导包的时候防止导入
3.多继承:继承多个父类

class A(object):
        pass

     class B(object):
        pass
     class C(A,B):      #多个类之间用逗号分隔
        pass


注意事项:
搜索顺序:先自身,后从左往右,最后基类(object)

三、多态

不同的 子类对象 调用相同的 父类方法,产生不同的执行结果.
可以 增加代码的灵活度.
以 继承 和 重写父类方法 为前提.
是调用方法的技巧,不会影响到类的内部设计.