第七章 类

引言

  1. 码字不易,如果这篇文章对您有帮助的话,希望您能点赞、收藏、加关注!您的鼓励就是我前进的动力!

一、类的创建

  1. 首字母大写的名称指的是类。
  2. 类中的函数称为方法。
  3. 以 self 为前缀的变量,可供类中所有方法使用。
  4. 通过实例访问的变量称为属性。
  5. 方法「 init() 」是一个特殊方法,每当你根据类创建新实例时,python就会自动运行它。务必确保应 init 的两边都有两个下划线。在这个方法的定义中,形参self必不可少,而且必须位于其他形参的前面。
  6. 我们将通过实参向类传递参数,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

二、实例的创建

  1. 通常可认为,首字母大写的名称是类,而小写的名称指的是根据类创建的实例。
  2. 要访问实例的属性,可使用句点表示法。
  3. 创建实例时,有些属性无需通过形参来定义,可在方法 init() 中为其指定默认值。
#省略了类Book的定义

book1=Book('小王子',35) #创建了实例book1

book_name=book1.name  #访问实例的属性
book1.check() #调用类中的方法

#修改属性的值
book1.number=2103 #直接修改
book1.change_num(2104) #通过方法修改
book1.increment_num(2) #通过方法对属性的值进行递增

三、子类

  1. 继承:编写类似并非总要从空白开始。如果要编写的类是另一个现成类的特殊版本,可使用继承。
  2. 一个类继承另一个类时,将自动获得另一个类的所有属性和方法。原有的类称为父类,而新类被称为子类。

(一)子类的属性与方法

  1. 子类继承了父类的所有属性和方法,同时还可以定义自己的属性和方法。
  2. 给子类定义属性和方法。

(二)重写父类的方法

  1. 对于父类的方法,只要它不符合此类模拟的实物行为,都可以进行重写。为此,可在子类中定义一个与要重写的父类方法同名的方法。这样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}")

四、类的导入

  1. 在一个模块中导入另一个模块:有时候需要将类分散到多个模块中,以免模块太大,或在同一个模块中存储不相关的类。将类存储在多个模块中时,你可能会发现一个模块中的类依赖于另一个模块中的类。在这种情况下,可在前一个模块中导入必要的类。
  2. 导入模块中的类时,可以直接使用(例如:book1=Book(‘abc’,59));导入整个模块时,使用要用句点表示法(例如:book1=book.Book(‘abc’,59))。
  3. 导入类时,也可为其指定别名,方法同给函数指定别名。
#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()

  1. randint() 函数:它将两个整数作为参数,并随机返回一个位于这两个整数之间(包括这两个整数)的整数。
from random import randint
print(randint(0,8))
#输出:6
  1. choice() 函数:它将一个列表或元组作为参数,并随机返回其中的一个元素。
from random import choice
list=[1,2,3,4,5]
print(choice(list))
#输出:3
  1. 注意:创建与安全相关的应用程序时,请不要使用模块 random。

六、类的编写规范

  1. 类的命名应采用驼峰命名法:即将类名中的每个单词的首字母都大写,而不是用下划线。
  2. 实例名和模块名都采用小写格式,并在单词之间加上下划线。
  3. 对于每个类都应紧跟在类的定义后面,包含一个文档字符串。
  4. 需要同时导入标准库中的模块和你编写的模块时,先编写导入标准库模块的import语句。再添加一个空行,然后编写导入,你自己编写的模块的import语句。

参考资料:
[1] Eric Matthes. Python编程从入门到实践. 北京:人民邮电出版社, 2020.
[2]嵩天,礼欣,黄天羽. Python语言程序设计基础(第二版). 北京:高等教育出版社, 2017.
[3]Python语言程序设计,北京理工大学 嵩天

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉远

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值