python面向对象编程

时间:2023-01-02 12:55:31

面向对象编程,简称OOP, object oriented programming

OOP编程的三大特性:封装,继承,多态

1. 封装

  把功能的实现细节封装起来,不对外暴露。只留出入接口。

2. 继承

  为了将代码重用,所以需要基础。包括单继承/多继承

  在2.7中,经典类,遵从深度优先原则进行继承;新式类,遵从广度优先原则

  在3.0以后,不论经典类还是新式类,都遵从广度优先原则。以后请全部按新式类来书写!

  经典类: class Foo

  新式类: object是所有类的基类,Foo继承基类object,Foo类的构造函数基于基类进行了重构

  class Foo(object) :

    def __init__(self,name,age,salary,course):

      super(Foo,self).__init__(self,name,age,salary)  # super是一个特殊的类,使用此语法,将父类的构造方法在子类构造方法中执行

      #object.__init__(self,name,age,salary) 此行是经典类中的写法。尽量不要这样写。因为在多继承中,该写法意味着需要显示地调用多个父类的构造方法,容易出问题

      self.salary = salary

      self.sex = sex

3. 多态

  一种接口,多种实现

 

类:

  属性attribute

    实例变量:存在每个对象的内存里

    类变量:存在类的内存里,所有实例共享这个变量

    私有属性/公有属性:带两个下划线__的变量如__var,是私有属性,只能在类的内部被调用

  方法function

方法包括:普通方法、静态方法和类方法,三种方法在内存中都归属于类,区别在于调用方式不同。

    • 普通方法:由对象调用;至少一个self参数;执行普通方法时,自动将调用该方法的对象赋值给self
    • 类方法:由调用; 至少一个cls参数;执行类方法时,自动将调用该方法的复制给cls;def上一行加上@classmethod 
    • 静态方法:由调用;无默认参数;def上一行加上@staticmethod