一. 为什么要用到类:
类是一种更高级的封装,可以将多个功能函数按照一定的顺序组织成新的结构,这个结构有几个主要作用:
1、将复杂的组织功能装成一个整体,降低了代码使用的复杂度。外界可以直接使用而不用管里面具体的原理。例如高斯勒让德求积是【求高斯点】——【高斯权重】——【映射到标准区间[-1,1]上运算】三个步骤,将其封装成一个类可以更加方便的使用
2、隐藏数据,保证安全性和隐私性
二. self、attribute 和method
1、self和attribute
指代的是“类”产生的一个实例。以特斯拉为例,Tesla的工厂(类)产生的一辆具体的汽车就可以称为“实例”,其中这辆具体的汽车(实例)会有一些属性,例如颜色、型号等等,可以在__init__方法中定义好:
class tesla():
def __init__(self,color,model):
self.color = color
self.model = model
@staticmethod
def run():#此处是定义一个静态方法
print("i can run")
def col(self):#传入self也就是一个实例对象,该方法可以返回一辆具体车的颜色
print("my color is "+ self.color)
t = tesla("red","model_y")
t.run() #i can run
t.col() #my color is red
总结
- self的名字可以用其他表示替换,只是一种习惯而不是强制的要求
- self总是指调用时类的实例
- self只有类的方法中才会有,不会出现在独立的函数或者方法中
2.method简述
method 和function的区别:
两者都由def定义,在class里面的function叫method。所以,method看作一种出现在类中“特殊的fuction“即可。具体例子参照上面代码的run()
三.类里的几种方法(method)简述
类里的方法有下三种
- 实例方法:
- 特点:该方法必须接收前面定义的self参数(最左侧传入self)。实例才可以调用
- 定义:直接在类里面定义
- 调用:self.f()调用
- 如果要用到self之外的参数,在self的右侧传入,如f(self,x),其中x不是self的属性
- 类方法
- 特点:不接受self参数,而是接受cls参数(最左侧传入cls)。类和实例都可以访问
- 定义:在函数定义前加上@classmethod
- 调用:可以由类调用,也可以由实例对象调用
- 静态方法
- 特点:不接受cls和self参数。类和实例都可以访问
- 定义:在def的前面加上@staticmethod
其他备注
- 类中定义私有的,外部无法进行访问。这样可以保证一些内部数据的安全性和隐私性,定义的方式是:_(杠)__(杠杠)。
【1】https://blog.csdn.net/qq_33571752/article/details/85156727
【2】https://www.cnblogs.com/chownjy/p/8663024.html
【3】https://segmentfault.com/a/1190000019488226
【4】https://www.cnblogs.com/plf-Jack/p/11051933.html