惊雷无声 发表于 2025-1-6 05:36:17

【第二部门--Python之基础】05 类与对象

1 面向对象

类和对象都是面向对象中的重要概念。面向对象是一种编程思想,即按照真实天下的头脑方式构建软件系统。
https://i-blog.csdnimg.cn/direct/b303c0058ff4415594f9a9e0180babbd.png2 定义类

Python中的数据范例都是类,我们可以自定义类,即创建一种新的数据范例。
定义小汽车(Car)类的代码如下:
https://i-blog.csdnimg.cn/direct/6e2ba524e670490bb4c12e25ff21119f.png
https://i-blog.csdnimg.cn/direct/89374991e5624b4d8c5071e16e16c1b7.png
小汽车(Car)类继续了object类,object类是所有类的根类,在Python中任何一个类(除object外)都直接或间接地继续了object,直接继续object时(object)部门的代码可以省略。
https://i-blog.csdnimg.cn/direct/71a8020294a84ed689e45e1ca34c7df7.png
3 创建对象

类相当于一个模板,依据如许的模板来创建对象,就是类的实例化,所以对象也被称为“实例”。
https://i-blog.csdnimg.cn/direct/77180bc4eb1e4a3da8542e387617367d.png
### 创建对象
class Car(object):
    # 类体
    pass

# 创建一个小汽车对象,小括号表示调用构造方法,构造方法用于初始化对象
car = Car() https://i-blog.csdnimg.cn/direct/903549750e7d481591c76c0fa3cd5b35.png
4 类的成员

https://i-blog.csdnimg.cn/direct/fdd178cf5e9a498a97e166ae1fd5b962.png
成员变量也被称为数据成员,保存了类或对象的数据。例如,门生的姓名和学号。
构造方法是一种特别的函数,用于初始化类的成员变量。
成员方法是在类中定义的函数。
属性是对类举行封装而提供的特别方法。
https://i-blog.csdnimg.cn/direct/5b46381e6bb94772b21880d17e5cf3c2.png
https://i-blog.csdnimg.cn/direct/e6b6c2126a1d4d29b70e4b3b1ba24059.png
4.1 实例变量

实例变量就是对象个体特有的“数据”,例如狗狗的名称和年龄等。
init __()方法是构造方法,构造方法用来初始化实例变量。留意,init的前后是两个下画线
https://i-blog.csdnimg.cn/direct/6bb3db9a9f9348298f87e23b2559cef0.png
https://i-blog.csdnimg.cn/direct/a8f2724f71e34fab993326acd84d06cc.png
4.2 构造方法

类中的__init__()方法是一个非常特别的方法,用来创建和初始化实例变量,这种方法就是“构造方法”。在定义__init__()方法时,它的第1个参数应该是self,之后的参数用来初始化实例变量。调用构造方法时不需要传入self参数。
构造方法的示例代码如下:
https://i-blog.csdnimg.cn/direct/4b121cb2beb94a049e29c3a31f4bf978.png
4.3 实例方法

实例方法与实例变量一样,都是某个实例(或对象)个体特有的方法。
定义实例方法时,它的第1个参数也应该是self,这会将当前实例与该方法绑定起来,这也说明该方法属于实例。在调用方法时不需要传入self,类似于构造方法。
下面看一个定义实例方法的示例:
https://i-blog.csdnimg.cn/direct/5f936a3723aa44feab8939f7ed022a76.png
4.4 类变量

类变量是属于类的变量,不属于单个对象。
例如,有一个Account(银行账户)类,它有三个成员变量:amount(账户金额)、interest_rate (利率)和owner(账户名)。amount和owner对于每一个账户都是差别的,而interest_rate对于所有账户都是相同的。amount和owners是实例变量,interest_rate是所有账户实例共享的变量,它属于类,被称为“类变量”。
类变量的示例代码如下:
https://i-blog.csdnimg.cn/direct/e3bd0980b5dc4f01ae201b94df787742.png

https://i-blog.csdnimg.cn/direct/3da7b41cdd02420288eb137e852b4059.png
4.5 类方法

类方法与类变量类似,属于类,不属于个体实例。在定义类方法时,它的第1个参数不是self,而是类自己。
https://i-blog.csdnimg.cn/direct/8fb4452d00a3432cbaae1b976b383cde.png
留意:类方法可以访问类变量和其他类方法,但不能访问其他实例方法和实例变量。在以上示例中,cls.interest _rate用于访问Account类变量interest rate。如果在类方法interest_by(中添加访问实例变量的owner语句,则会发生错误。
5 封装性

封装性是面向对象重要的基本特性之一。封装隐蔽了对象的内部细节,只保留有限的对外接口,外部调用者不消关心对象的内部细节,使得利用对象变得简单。
5.1 私有变量

为了防止外部调用者随意存取类的内部数据(成员变量),内部数据(成员变量)会被封装为“私有变量”。外部调用者只能通过方法调用私有变量。
在默认情况下,Python中的变量是公有的,可以在类的外部访问它们。如果想让它们成为私有变量,则在变量前加上双下画线(__)即可。
https://i-blog.csdnimg.cn/direct/9a72dea14a3d4e39b308c3dc8420d06c.png
由于在类的外部不可以访问私有变量,因此上述代码在运行时会发生错误。
5.2 私有方法

私有方法与私有变量的封装是类似的,在方法前加上双下画线(__)就是私有方法了。
https://i-blog.csdnimg.cn/direct/a0aece6c522e43c685b7a878369f286d.png
由于在类的外部不可以访问私有方法,因此上述代码在运行时会发生错误。
5.3 使用属性

为了实现对象的封装,在一个类中不应该有公有的成员变量,这些成员变量应该被设计为私有的,然后通过公有的set (赋值)和get(取值)方法访问。
使用set和get方法举行封装,示例代码如下:
https://i-blog.csdnimg.cn/direct/4103f5f705e34b7c891169fbfc558b8b.png
使用属性方式修改上面的示例,代码如下:
https://i-blog.csdnimg.cn/direct/517aae7ce7cc48ff8d1cac80982c37c3.png
https://i-blog.csdnimg.cn/direct/dd9cf97588ab44f2830dfffcaf6ff159.png

6 继续性

继续性也是面向对象重要的基本特性之一
在面向对象中动物是一样平常类,被称为“父类”;猫是特别类,被称为“子类”。特别类拥有一样平常类的全部数据和利用,可称之为子类继续父类。
6.1 Python中的继续

在Python中声明子类继续父类,语法很简单,定义类时在类的后面使用一对小括号指定它的父类就可以了。
https://i-blog.csdnimg.cn/direct/8e0983289e04477bad2e7e3c3d7a2eb5.png
https://i-blog.csdnimg.cn/direct/36a2800d3e15417fa735c50f690c65fc.png
6.2 多继续

在Python中,当子类继续多个父类时,如果在多个父类中有相同的成员方法或成员变量,则子类优先继续左边父类中的成员方法或成员变量,从左到右继续级别从高到低。






免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【第二部门--Python之基础】05 类与对象