从本章开始,我们开始使用pycharm作为开发环境,具体配置过程可以参见如下链接:
类的定义和使用
作为一个好公民,要积极践行垃圾分类(你是什么垃圾?:p),垃圾分类是将垃圾按照一定的标准分开存储、投放和搬运,分类的好处在于能将具有共同特点的事物统一处理。python中有个概念叫做类,也是将现实中具体的一类东西,抽象出一些共性的东西,进而提高代码的复用性和可读性。
话不多说,首先看个例子:
class Website(): #1 定义类
'''info about website''' #2 类说明
def __init__(self, domain_name): #3 初始化函数
self.domain_name = domain_name #4 类变量初始化
def publish(self): #5 定义publish函数
print(self.domain_name + " published docsify tutorials.")
def focus(self): #6 定义focus函数
print(self.domain_name + " focuses on machine vision tutorials.")
my_website = Website("www.cvtutorials.com") #7 实例化
my_website.publish() #8 函数调用
my_website.focus() #9 函数调用
在1处,定义了一个Website类,类名我们通常是用大写字母开头,如果是多个单词,可以每个首字母大写,例如BaseDetection。在2处,我们用三引号对类进行一个简单的说明,这行字符串也叫文档字符串。在3处,用__init__函数对类进行初始化,初始化的时候需要给定一个域名作为参数。在4处,将参数中的变量赋值给类变量,这样方便其他函数使用。在5处,定义了一个publish函数,表示网站已经完成的教程,在6处,定义了一个focus函数,说明网站的聚焦领域。代码运行结果如下所示:
继承
类的继承可以方便代码的复用,通过继承可以创建新类,新类叫做子类,被继承的类,叫做基类(鸡肋?:p)。
假如现在我们有一个新的需求,这个网站不再聚焦于机器视觉教程领域,转而聚焦于混合现实领域,我们将上面的Website作为一个基类,然后利用这个基类快速创建一个新类,代码如下:
class MyWebsite(Website):
'''website fouces on Mixed Reality'''
def __init__(self, domain_name):
super().__init__(domain_name)
def focus(self):
print(self.domain_name + " focuses on Mixed Reality.")
mr_website = MyWebsite("www.cvtutorials.com")
mr_website.publish()
mr_website.focus()