3.类的定义和使用

在这里,简单总结下学习这门课所用到的面向对象的知识,在下一小节里,将实现一个案例:学校人事管理系统中的类


0.类定义、类对象、类实例对象

类定义就好似你定义了一个类,写好了相应的代码;接下来开始运行这堆代码,在这段代码运行的过程中,python解释器创建相应的类对象,也就是说执行一个类定义会创建一个类对象;这个类对象支持两种操作:属性访问和实例化(即创建这个类的实例对象)
类定义—(执行)—类对象—(创建)—类实例 再具体一点:

  • 可以这样理解,类实例对象是类对象的子集,就好比类对象是水果,那么苹果、香蕉、橘子就是类实例对象(当然它们都是水果);再换个比喻,类对象是一张修建高楼大厦的图纸,那么我们根据这张图纸修建的A大厦、B大厦就是类实例对象(当然都是大厦)
  • 那类定义和类对象呢?有点绕,通俗来说,执行 描述这个类的代码 就创建了一个类对象
  • 每个类定义执行后都有且只有一个相对应的类对象,这个类对象可以创建多个类实例对象
  • 类定义可以写在程序里的任何地方(某个函数定义里,另一个类定义里),这一点和函数定义的情况相似.但通常把类定义写在模块的最外层,这样定义的(类)类型在整个模块里都可以用,而且允许其它模块里通过import语句导入和使用.

1.类对象及其使用

前面提到类对象支持的两种操作:属性访问和实例化.

  • 何为属性?类里面定义的变量函数等称为这个类的属性.
  • 在python中,所有的属性访问(属性引用)都采用圆点记法,可以通过类名.变量名类名.函数名进行调用.
  • 每个类对象都有一个默认存在的 __doc__数据属性,其值是该类的文档串.

2.实例对象:初始化和使用

虽然python允许先创建空对象,而后再逐渐加入所需要的属性,但不建议这样做:其一是繁琐,其二是为了安全性.因而我们会用到初始化操作.

  • __init__,在创建这个类的实例的时候,python解释器会自动调用这个方法
  • __init__方法的第一个参数(通常用self作为参数名)表示当前正在创建的对象,方法体内可以设置当前实例对象的初始值
  • 举个栗子:one = Rational(2,3),这条语句的执行过程种将完成以下一系列的操作:1.创建一个Rational类型的对象;2.调用Rational类的__init__函数给这个对象的两个属性赋值;3.返回新建的对象;4.赋值语句将这个新对象赋给变量one,作为其约束值.

3.类实例对象的数据属性

前面我们说过类对象的属性访问操作,其实,类实例对象也可以通过属性引用的方式,即圆点记法访问类实例对象的数据属性

  • 在python语言里,类实例对象的数据属性(相当于类里有定义的局部变量)不需要专门声明,只要给对象的属性赋值,就会自动创建这种属性(就像是普通变量一样).
  • 如果在类里定义了初始化函数,创建的实例对象就会包含该函数设置的属性。例如:上面的语句创建的Rational类的实例有一个局部名字空间,其中包含两个属性名num和den,它们被分别约束于整数值2和3.
  • 实际上,python允许在任意方法里给原本没有的(也就是说,初始化函数没建立的)属性赋值,这种赋值将扩大该对象的名字空间。但是在实际中这种做法并不多见。
  • 一个实例对象是一个独立的数据体。可以像其它对象一样赋给变量作为约束值,或者传进函数处理,或者作为函数的结果返回等。实例对象也可以作为其它实例对象的属性值(无论是同属于一个类的实例对象,或不属于同一个类的实例对象)

你可能感兴趣的:(3.类的定义和使用)