【_init_()】
说明:这是一个构造方法,一般用于直接初始化一个对象,同时对立面的参数进行赋值,后面调用内部方法可以直接通过{self.属性}获取其值
#【实验一】
class Callback(object):
#构造方法
def __init__(self):
self.validation_data = 45
def set_params(self, params):
self.params = params
cb = Callback()
print(cb.validation_data) #能得到45
#【实验二】
class Callback(object):
#构造方法
def __init__(self, data):
self.validation_data = data
def set_params(self, params):
self.params = params
cb = Callback(123)
print(cb.validation_data) #能得到123
在实验二部分更改为cb=Callback(),则运行会有报错
TypeError: __init__() missing 1 required positional argument: 'data'
说明,在_init_()定义的构造方法中,我们对对象类进行实例化的时候(其实python中实例化对象和初始化一起,其中_init_()方法中的self参数,就是在实例初始化后会通过self传递进入进行初始化属性参数),必须同时传递相应构造方法参数进行初始化其属性值。
扩展:self总是指调用时的类的实例。
【_call_()】
说明:可以将它们作为输入传递到其他的函数/方法中并调用他们,正如我们调用一个正常的函数那样,类中__call__()函数的意义正在于此。
其和_init_()方法区别
1. __init__()的作用是初始化某个类的一个实例。
2. __call__()的作用是使实例能够像函数一样被调用,同时不影响实例本身的生命周期(__call__()不影响一个实例的构造和析构)。但是__call__()可以用来改变实例的内部成员的值。
class X(object):
def __init__(self, a, b, range):
self.a = a
self.b = b
self.range = range
def __call__(self, a, b):
self.a = a
self.b = b
print('__call__ with ({}, {})'.format(self.a, self.b))
def __del__(self, a, b, range):
del self.a
del self.b
del self.range
#实例化这个类
x_instance = X(1, 2, 3)
#通过_call_()来修改类属性值
x_instance(1,2)
得到结果:__call__ with (1, 5)
_call_方法的存在,让实例可以让类似函数方法那样被直接使用,但是有个前提就是必须这个类是实例化了的,在Python实际使用中必须先实例化对象
【_new_()】
说明:__new__()创建和返回一个新的对象。通俗说:是用来创建实例对象的。Python中存在于类中的构造方法__init__()负责将类实例化,而在__init__()执行之前,__new__()负责制造这样的一个实例对象,以便__init__()去让该实例对象更加的丰富(为其添加属性等)。
【_set_()】
说明:调用以将所有者类的实例instance设置为一个新值value.,调用相关属性时触发
【_get_()】
说明:调用相关属性时触发
【_delete_()】
说明:调用以删除所有者类的实例的属性