在看代码的时候,发现一些特别的写法class,self。
class cat():
def __init__(self, color, weight):
self.color = color
self.weight = weight
其实它本质就是一个函数。一般函数可以实现简单功能复用,但是【类】可以实现复杂的代码复用。
举个例子,动物是一个类,小猫是一个实例。也就是说类包含无数的实例。再如,PPT模板是类,修改PPT模板中的数据和文字得到新的PPT,就是一个实例,修改的过程是实例化。
1.类由【属性】和【方法】组成。如猫是一个类,属性(特征)是:毛色、体重;方法(能干什么)是抓老鼠。
代码实现就是函数,一个函数经过固定格式的包装后就是类的方法。
2.类的定义和实例化有固定的格式要求。self也是必须的。
3.所有的类都有一个_init_(self)初始化方法,用来定义类有哪些属性,也可以在实例化类时执行某些方法。注意:类的方法函数的第一个参数必须是self,且不可改变(python底层代码注定的)。
如:
# 定义一个类——cat
class cat(): #属性定义
def __init__(self, color, weight):
self.color = color
self.weight = weight
def catch_mice(self): #方法定义
"""抓老鼠的方法"""
print('抓老鼠')
def eat_mice(self): #方法定义
"""吃老鼠"""
print('吃老鼠')
# 类的实例化——已经变成了my_cat
my_cat = cat('yellow', 10)
# 调用类的方法
my_cat.catch_mice()
# 输出 抓老鼠
my_cat.eat_mice()
# 输出 吃老鼠
# 查看类的属性
print(my_cat.color)
# 输出 yellow
print(my_cat.weight)
# 输出 10
再如:定义了三个类,Sol()、Node()、Model()以及它们各自的属性
class Sol():
def __init__(self):
self.node_id_list=None
self.obj=None
self.fit=None
self.routes=None
class Node():
def __init__(self):
self.id=0
self.x_coord=0
self.y_coord=0
self.demand=0
self.depot_capacity=15
class Model():
def __init__(self):
self.best_sol=None
self.demand_dict = {}
self.depot_dict = {}
self.demand_id_list = []
self.opt_type=0
self.vehicle_cap=0
self.distance_matrix={}
self.popsize=100
self.alpha=2
self.beta=3
self.Q=100
self.tau0=10
self.rho=0.5
self.tau={}