Python 面向对象编程的特点

封装

  • 将数据+方法(函数)封装,形成对象object
  • 一些对象的抽象,形成类class,是用户自定义类型。
  • 类实例化得到对象。先有类,后有对象。例如:猫(类) 我家的猫小白(对象)
  • 封装的目的:隐藏信息(数据),阻止非法访问。只能通过方法访问操作数据。

继承

类与类之间的关系,提高代码复用。

多态

子类中可以重写继承自父类的方法,提高代码复用。

Python 面向对象编程的基本语法

定义类

class 类名(基类列表):
    属性
        方法

属性定义

属性分为类属性(或类变量)和实例属性(或实例变量)两种。

  • 类属性在整个实例化的对象中是公用的,该类的所有实例均共享,它定义在类中且在所有方法之外,一般类属性通过类对象引用。
  • 实例属性对于每个实例都独有的数据,一般实例属性通过实例对象引用。

属性又分为公有属性和私有属性,私有属性名称以两个下划线“__”开头,私有属性在类外部无法直接进行访问。

在类的一个方法中可以引用该类的任意属性,类属性的引用方式是“类名称.类属性名称”,其他属性的引用方式是“self.属性名称”。

class A:
    x=2                     		#类属性x
    __y=0                   		#私有类属性y
    def __init__(self,p):		#构造方法
       self.z=p            		#实例属性z
       self.__w=0          		#私有实例属性w
    def add(self):
        self.__y+=10
        self.__w+=20
     def disp(self):
        print(A.x,self.__y,self.z,self.__w)
 
#主程序
A.x+=1                      		#修改类属性x
a=A(10)
a.add()
a.disp()                    		#输出:3 10 10 20
b=A("Bye")
b.disp()                    		#输出:3 0 Bye 0

方法定义

在类的内部使用def关键字来定义一个方法。

类方法必须包含参数self,且为第一个参数,self代表的是类的实例,即当前对象的地址,而self.class则指向类。

方法也分为公有方法和私有方法,类的私有方法名称以两个下划线“__”开头,私有方法不能在类的外部调用。

在类的一个方法中可以调用该类的任意方法,调用方式是“self.方法名称(参数)”。

Python中的一些专有方法

  • init():称为构造方法,在类实例化时会自动调用。该方法可以有参数,由于在实例化时给对象属性赋值。
  • del:析构函数,释放对象时使用。
  • repr:在输出时实现转换。
  • setitem:按照索引赋值
  • getitem:按照索引获取值
  • len:获得长度
  • cmp:比较运算
  • call:函数调用
  • addsubmultruedivmodpow_:分别用于加、减、乘、除、求余和乘方运算。

定义对象

类对象

  • Python中一切皆对象。类对象与类名称相同。
  • 可以使用“类对象.类属性”的方式引用类属性,不能通过类对象引用其他属性和调用类的其他方法。

实例对象

实例对象是类对象实例化的产物。
定义实例对象一般格式:

实例对象名称=类名称([参数列表])。

通过实例对象可以引用类的所有非私有属性和调用非私有方法,对于实例对象而言,类属性是不存在的。


我们所度过的每个平凡的日常,也许就是连续发生的奇迹