python类
- self
python类中的self相当于C++类中的this指针 - __ init __()
相当于C++类的构造函数 - __ del __()
相当于C++的析构函数 - 私有和公有
在属性前面加两个下划线表示private变量,比如下面的__name,单下划线则是protected变量,允许子类调用 - 继承
在类中的括号为继承的对象,Net继承了nn.Module - super().init()
执行父类的初始化函数,子类__init__()重写后会覆盖掉父类中的__init__(),通过执行super().init()可以把父类中__init__()的内容也继承过来
class Net(nn.Module):
__name = "helo"
def __init__(self):
super().__init__()
...
def getname(self):
print(self.__name)
python函数/方法
- 收集参数
当不确定输入参数有多少个时,采用收集参数,*params就是收集参数 - 函数文档
写在函数最上方的注释是函数文档,查看方式有三种
help(func)#推荐这种
func??
func.__doc__
- 函数/类的方法查看
输出如果全是带双下划线的,应该是一个函数,直接调用即可,如果输出有不带双下划线的,应该是一个类
class A:
def add(a,b):
return a+b
dir(A)
def func(*params,exp):
'''函数输入是收集参数的示例
当不明确输入是多少个参数时,收集参数的使用则十分合适
当输入既有 收集参数params 又有 关键字参数exp 时,函数调用要指明关键字参数,否则会把所有输入参数当作params'''
length = len(params)
result = 0
for i in range(0,length):
result += params[i]
return result+exp
arg = [1,2,3,4,5]
func(*arg,exp = 5)
实用函数
- map(映射关系,映射对象)
map创建了一种函数的映射关系
list(map(lambda x:3*x,range(0,9)))
out:
[0, 3, 6, 9, 12, 15, 18, 21, 24]
- filter(过滤条件,过滤对象)
arr = [1,0 ,False,True]
list(filter(None,arr))
out:
[1, True]
- 魔法方法
那些带有前后双下划线的方法/函数,例如__init__() [>>click here]