1、Python中面向对象中的重要概念
在Python中,面向对象编程是一种常用的编程范式,它可以将数据(属性)和操作数据的方法封装在类(Class)中,使程序中的代码得到重用,从而更加模块化、可维护和可扩展。面向对象的基础概念如下所示:
类(Class): 类可以理解为一个模板或蓝图,用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
类变量: 类变量属于类中的公共资源,简单点来说就是全局变量,类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外,通常不作为实例变量使用。
数据成员: 包括类变量和实例变量,用于处理类及其实例对象的相关数据 。
方法重写: 如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(Qvereide),也称为方法的重写。
实例变量: 定义在方法中的变量,只作用于当前实例的类。
实例化: 创建一个类得到示例,一个类的具体对象。
方法: 方法是类定义中声明的函数,方法是一组操作数据的代码,它们可以实现某些功能或者改变属性的值。
对象: 对象是类的实例,它是具有特定属性和方法的实体。 对象包括两个数据成员(类变量和实例变量)和方法。
继承: 继承是一种面向对象编程的概念,它允许开发人员创建一个新类,该类继承了现有类的属性和方法。继承允许子类重用父类的代码,从而减少了代码的重复性。
多态: 多态是一种面向对象编程的概念,它允许开发人员使用相同的接口来处理不同类型的对象。多态使代码更加灵活和可扩展。
封装: 封装是一种面向对象编程的概念,它允许开发人员隐藏对象的内部实现细节。封装通过将对象的状态和行为隐藏在类中,以使其对外部不可见,从而提高了代码的可维护性和安全性。
2、Python中面向对象的基本实现
(1)类的定义语法
类是面向对象编程中的基础,它是一种用来描述具有相同属性和方法的对象集合的蓝图。类必须在被定义后才能使用,定义一个类也就是定义这一类对象的模板,定义它的属性和方法。在Python中,可以使用class关键字定义一个类,定义格式如下:
class [类名]:
[语法块]
这里需要注意的是,定义类名和变量名一样区分大小写。字母相同但是大小写不同的类会被Python解释器视为两个不同的类。
现在我们定义一个简单的类,例如:
动手练一练:
class Person:
pass
上面的例子中,我们定义了一个空的Person类,虽然什么都没有做,但是不影响它的存在。
(2)类的使用
在使用类之前需要实例化类,类实例化后才会成为常见的对象。创建对象的过程也叫实例化,和创建变量类似,需要先声明对象是属于哪个类,同时指明对象的变量名称。
动手练一练:
class Person:
pass
person1 = Person()
print(person1)
执行以上代码,输出结果为:
<__main__.Person object at 0x00000148B2DF71F0>
上面的例子中,我们创建了一个Person对象,实例化后的对象变量名字为“person1”,同时在内存中为这个对象分配了内存空间。
(3)类的构造方法
在创建实例时,很多类可能都需要对数据进行初始化。所以,一个类可以定义一个特殊的初始化方法,叫做构造函数,也称作构造方法。构造方法的固定名称为“_init_()”,当创建类的对象时,系统会自动调用构造方法,从而实现对对象进行初始化的操作。(这里需要注意:“_init_”前后都有两个连续的短下划线)
定义和使用构造函数如下:
动手练一练:
class Person:
def __init__(self):
print("你好!")
person = Person()
执行以上代码,输出结果为:
你好!
当一个类定义了“_init_()”方法,类在实例化时会自动调用并运行“_init_()”方法,用于创建新的类实例。上面的例子中,新的实例被创建,同时执行了构造方法,运行了print("你好!")函数。这里需要注意的是,构造方法的第一个参数是“self”,不能漏掉,“self”表示对象自身。
这里还需要注意的是,构造方法“_init_(self)”的返回值必须是None,即无返回值。(无返回值并不是说需要手动指定return None)。