类
面向对象的编程,类是封装对象的属性和行为的载体。属性就是静态部分,如一个人的性别,而行为就是动态部分,如一个人要行走。对象是类的一个具体实现,如java中的new 一个类的操作。类的作用就是抽象出对象的公共的部分,然后定义出具体的属性和行为,然后封装成为类,即类是这些公共属性和行为的载体。
继承
继承是重复利用的手段,封装好类以后可以实现多个子类继承父类的行为。子类继承了父类的公共属性和行为后也可以实现自己特有的属性和行为,就是所谓的多态。这样的多态化结构就是通过继承父类的行为而实现多态。
类的定义和使用
根据对象的公共属性和行为先定义类,然后再创建类的实例,这样就可以通过对象的实例方位对象的属性和行为了。
类的定义
使用关键字 class 定义类
class ClassName:
‘’’ 类的描述‘’’//这些信息可以在编译代码的时候提示。
Statement//类的行为和属性,也就是类体
创建类的实例
ClassName(parameterList)
类的实例化会调用类的__init__()方法即类似于java语言中的构造方法。如果自己定义的类中没有实现此方法,则python会自动创建此方法。该方法的第一个参数是对象自己,即实例本身。
10-1
也可以定义__init__()的时候定义多个参数。
10-2
创建类的成员并访问
类只要有类的成员和方法组成。创建和访问如下图:
10-3
类的成员变量,即属性。属性可以分为类属性和实例属性。
类属性:定义在类内但是在方法外定义的属性,也可以在方法内部通过类名.属性的方法进行定义。类属性可以通过类名或者实例名访问。
如下图:
10-4
实例属性:只在方法内部定义的属性输入实例属性。实例属性只能通过实例名的方式访问。如下图:
10-5
访问限制
类定义的成员变量 python并没有限制。在类外都可以访问。Python提供了访问限制符号。可以在属性或者方法的前面添加下划线_、双下划线__、或者收尾双下划线。
- 收尾双下划线,定义特殊方法,一般是系统定义的名字,如__init__();
- _单下划线开头表示 protected(保护)类型的成员,只允许类本身和子类进行访问,但不能在另外一个模块中使用。即不能使用 from module import 语句导入。访问方式是类名._xx和实例._xx.
10-6
- __双下划线表示private属性,只允许在类内部使用,访问方式是类名.__xx。
10-7
- 不加下划线的属性和方法是public属性。
特殊属性
使用装饰器@propert这个装饰器的作用是将方法转换为对属性操作的功能,由此装饰器描述的方法,不用传入参数,也不用(),直接使用实例名.方法名即可。这样的调用方式会自动实现对相关属性进行运算。并将结果返回。这样创建的属性相当于可以直接通过这种访问属性的方法访问私有属性,但又不能修改私有属性的方式。
10-8
继承
继承的方式:
Class subclass(superclass):
‘’’ 类描述’’’
Statement //类体
重写方法
继承一个类后,可以对父类中的方法重新编写,从而达到子类的目的。
图10-9
子类实例化的时候不会自动调用父类的__init__()方法,需要子类自己显示的调用一下。
10-10