美文网首页
python类与对象详解(6):绕过init创建实例

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

作者: KillerManA | 来源:发表于2016-04-26 22:01 被阅读407次

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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/okfcrttx.html