python类与对象详解(6):绕过init创建实例

2016-04-26  本文已影响407人  KillerManA

通常,我们创建实例都是通过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。

上一篇下一篇

猜你喜欢

热点阅读