类的详解
在软件开发中,面向对象是我们离不开的东西,从系统设计的角度出发,总是以面向对象的方式对现实世界理解和抽象。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。这一知识点往往在面试过程中也是非常重要的一个环节,让我们一起去看看python中的类是如何实现的。
1 面向对象概念及特征
1.1 概念
面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。
1.2 特征
封装: 就是隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别,将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。
封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。
继承: 是面向对象的基本特征之一,继承机制允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
多态: 同一个行为具有多个不同表现形式或形态的能力。是指一个类实例(对象)的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。强调:多态呢 其实就是不同类的对象使用相同的操作实现不同的功能 例如动物是一个基类 有猫、狗、猪等 基类有吃东西方法 但是不同的动物吃的东西不一样
2.类的定义和使用
在了解Python的类与类型前,需要对Python的经典类(classic classes)与新式类(new-style classes)有个简单的概念。
在Python 2.x及以前的版本中,由任意内置类型派生出的类(只要一个内置类型位于类树的某个位置),都属于“新式类”,都会获得所有“新式类”的特性;反之,即不由任意内置类型派生出的类,则称之为“经典类”。
“新式类”和“经典类”的区分在Python 3.x之后就已经不存在,在Python 3.x之后的版本,因为所有的类都派生自内置类型object(即使没有显示的继承object类型),即所有的类都是“新式类”。
2.1 类的定义
class ClassName():
def __init__(self):
self.name = None
def funcClass(self):
pass
pass
python中定义类使用class关键字,class后面紧接类名,类名通常是大写开头的单词
类包含属性和方法
- 属性:分为类属性和实例属性
- 方法:即定义在类中的函数(与普通的函数类似)
一个对象的特征称为"属性",一个对象的行为称为"方法"。属性在代码层面上来看就是变量,方法实际就是函数,通过调用这些函数来完成某些工作
在类中定义方法的形式和函数差不多,但其不称为函数,而是叫方法。方法的调用需要绑定到特定的对象上(通过self.或实例对象名),而函数不需要
2.2 类的使用
class Test():
Con = 123
def __init__(self,name):
self.name = name
self.__age = None
def eat(self):
return "吃方法"
t = Test(