Python学习04:课程,类

发表时间:2021-05-11




一、类的构成

1.1 类


一种复杂的数据类型,将不同类型的数据和与这些数据相关的操作封装在一起的集合体


class className:
	attrs = attrsValue
	def __init__(self):
		initStatements
	def methodName(self):
		methodStatements

1.2 实例


类的具体对象

类实例化后,可以使用其属性和方法


a = className()

self :本质上是类的一个实例,用于在类的内部传递参数导入的数据



1.3 方法


类似于函数

它们必须有一个额外的第一个参数名称 self ,也可以用 this



1.3.1 构造方法


对象都有这个方法,用于对类进行初始化,在实例化的时候会调用


def __init__(self):
	initStatements


1.4 属性


  1. 数据属性:类中的变量
  2. 函数属性:就是方法


1.4.1 类的私有属性


两个下划线开头,声明该属性为私有,不能通过类的外面调用。只能在类内部的方法中使用

如果想在类的外部调用私有属性,需要定义接口函数



1.4.2 类的私有方法


方法名以两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类的外部调用



二、继承


class class_B:
	a = 1
	b = 2
class class_A(class_B):
	c = 3
	d = 4

A = class_A()
print(A.a)

如果 Class_A 继承自 Class_B ,称:

  • Class_A Class_B 的子类, Class_B Class_A 的父类(超类)
  • Class_B 称为基类, Class_A 称为派生类

继承的作用:

  • 实现代码的重用
  • 实现属性和方法的继承


2.1 性质


  1. 子类拥有了父类的全部方法和属性
  2. 如果子类有和父类同样的方法和属性,子类的方法和属性会覆盖父类的方法和属性,这叫 重写 (override)
  3. 子类可以继承系统已有的类

重度的继承并不是好事


重写显示了 OOP 的特性之一, 多态 (Polymorphism) :相同的信息给予不同的对象会引发不同的动作


super(class, object).method() :用于调用父类的一个方法



2.2 抽象类


抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化。


由于 Python 没有抽象类、接口的概念,所以要引入 abc 库

from abc import ABC, abstractmethod

要在 Python 类中使用抽象方法,首先要继承 abc.ABC ,然后给实例方法加上装饰器 @abstractmethod ,这样该类不能被直接实例化,要想使用该类,应继承该类并实现所有的抽象方法



2.3 多重继承


多重继承是一把双刃剑


继承顺序:

  1. 默认调用的是在括号中排前的父类的方法
  2. 广度优先


三、封装


封装(encapsulation)是对对象(object)的一种抽象,即隐藏类或者模块的某些部分,只提供接口(interface)给外部使用,封装和类的私有化息息相关



四、成功的面向对象语言的五个基本特性


  1. 万物皆为对象
  2. 程序是对象的集合,他们通过发送消息来告知彼此所要做的
  3. .每个对象都有自己的由其他对象所构成的存储
  4. 每个对象都拥有其类型
  5. 某一特定类型的所有对象可以接受同样的消息(多态)




同步更新于: SP-FA 的博客


返回

文章来源互联网,如有侵权,请联系管理员删除。邮箱:417803890@qq.com / QQ:417803890

微配音

Python Free

邮箱:417803890@qq.com
QQ:417803890

皖ICP备19001818号-4
© 2019 copyright www.pythonf.cn - All rights reserved

微信扫一扫关注公众号:

联系方式

Python Free