引言
- 码字不易,如果这篇文章对您有帮助的话,希望您能点赞、收藏、加关注!您的鼓励就是我前进的动力!
一、类的创建
- 首字母大写的名称指的是类。
- 类中的函数称为方法。
- 以 self 为前缀的变量,可供类中所有方法使用。
- 通过实例访问的变量称为属性。
- 方法「 init() 」是一个特殊方法,每当你根据类创建新实例时,python就会自动运行它。务必确保应 init 的两边都有两个下划线。在这个方法的定义中,形参self必不可少,而且必须位于其他形参的前面。
- 我们将通过实参向类传递参数,self会自动传递,因此,不需要传递它。
class Book:
"""书籍信息类"""
def __init__(self, name, price): #类的属性
"""初始化属性"""
self.name = name
self.price = price
#设置属性number的默认值为0,注意init中不需要加此变量
#也可以在init形参列表中设置,类似于设置函数参数默认值
self.number = 0
def check(self): #类的方法
"""查看书籍"""
pass
def change_num(self, new_num):
"""修改图书编号"""
self.number = new_num
def increment_num(self, add_num):
"""将图书的编码增加指定的量"""
self.number += add_num
二、实例的创建
- 通常可认为,首字母大写的名称是类,而小写的名称指的是根据类创建的实例。
- 要访问实例的属性,可使用句点表示法。
- 创建实例时,有些属性无需通过形参来定义,可在方法 init() 中为其指定默认值。
#省略了类Book的定义
book1=Book('小王子',35) #创建了实例book1
book_name=book1.name #访问实例的属性
book1.check() #调用类中的方法
#修改属性的值
book1.number=2103 #直接修改
book1.change_num(2104) #通过方法修改
book1.increment_num(2) #通过方法对属性的值进行递增
三、子类
- 继承:编写类似并非总要从空白开始。如果要编写的类是另一个现成类的特殊版本,可使用继承。
- 一个类继承另一个类时,将自动获得另一个类的所有属性和方法。原有的类称为父类,而新类被称为子类。
(一)子类的属性与方法
- 子类继承了父类的所有属性和方法,同时还可以定义自己的属性和方法。
- 给子类定义属性和方法。
(二)重写父类的方法
- 对于父类的方法,只要它不符合此类模拟的实物行为,都可以进行重写。为此,可在子类中定义一个与要重写的父类方法同名的方法。这样python将不会考虑这个父类方法,而只关注你在子类中定义的相应方法。
class ReferenceBook(Book): #实参为其父类名
"""参考书类"""
def __init__(self, name, price): #父类的属性
"""
先初始化父类的属性。
再初始化子类的属性。
"""
super().__init__(name, price) #继承父类的属性
self.page = 0 #定义子类自己的属性
self.writer=Writer("Willian") #将实例用作属性(Writer()是个类)
def show_page(self):
"""展示页数信息"""
print(f"Page number:{self.page}")
def check(self):
"""重写父类方法"""
print(f"Book name:{self.name}")
四、类的导入
- 在一个模块中导入另一个模块:有时候需要将类分散到多个模块中,以免模块太大,或在同一个模块中存储不相关的类。将类存储在多个模块中时,你可能会发现一个模块中的类依赖于另一个模块中的类。在这种情况下,可在前一个模块中导入必要的类。
- 导入模块中的类时,可以直接使用(例如:book1=Book(‘abc’,59));导入整个模块时,使用要用句点表示法(例如:book1=book.Book(‘abc’,59))。
- 导入类时,也可为其指定别名,方法同给函数指定别名。
#book.py 是一个保存了类Book, ReferenceBook 的模块
from book import Book #导入模块中的单个类
from book import Book,ReferenceBook #导入模块中的多个类
import book #导入整个模块
from book import * #导入模块中的所有类,不推荐
from book import Book as b #给导入的类指定别名
五、Python标准库函数:randint(),choice()
- randint() 函数:它将两个整数作为参数,并随机返回一个位于这两个整数之间(包括这两个整数)的整数。
from random import randint
print(randint(0,8))
#输出:6
- choice() 函数:它将一个列表或元组作为参数,并随机返回其中的一个元素。
from random import choice
list=[1,2,3,4,5]
print(choice(list))
#输出:3
- 注意:创建与安全相关的应用程序时,请不要使用模块 random。
六、类的编写规范
- 类的命名应采用驼峰命名法:即将类名中的每个单词的首字母都大写,而不是用下划线。
- 实例名和模块名都采用小写格式,并在单词之间加上下划线。
- 对于每个类都应紧跟在类的定义后面,包含一个文档字符串。
- 需要同时导入标准库中的模块和你编写的模块时,先编写导入标准库模块的import语句。再添加一个空行,然后编写导入,你自己编写的模块的import语句。
参考资料:
[1] Eric Matthes. Python编程从入门到实践. 北京:人民邮电出版社, 2020.
[2]嵩天,礼欣,黄天羽. Python语言程序设计基础(第二版). 北京:高等教育出版社, 2017.
[3]Python语言程序设计,北京理工大学 嵩天