通常,我们创建实例都是通过init来进行实例化对象的,但有时候我们不想通过这种方法进行实例化,那么还有什么办法可以创建实例?
在python中init其实只是给实例进行赋值操作,真正进行实例创建的还是__new__()
方法,下面来看代码实例:
class Date:
def __init__(self, year, month, day):
self.year = year
self.month = month
self.day = day
这里通过别的方法进行实例创建
在编辑器中执行代码
>>> d = Date.__new__(Date)
这时候的d是Date的实例,但是还没有初始化,这时候进行属性访问会属性报错,比如:d.year
那么,我们在对这个实例进行初始化工作:
data = {'year': 2016, 'month': 04, 'day': 26}
for key, value in data:
setattr(d, key, value)
这样进行赋值操作之后在进行属性访问是可以的,比如:d.year 会显示2016。
网友评论