开发者社区> 问答> 正文

创建不调用init方法的实例

你想创建一个实例,但是希望绕过执行 init() 方法。

展开
收起
哦哦喔 2020-04-17 15:07:16 702 0
1 条回答
写回答
取消 提交回答
  • 可以通过 __new__() 方法创建一个未初始化的实例。例如考虑如下这个类:
    
    class Date:
        def __init__(self, year, month, day):
            self.year = year
            self.month = month
            self.day = day
    下面演示如何不调用 __init__() 方法来创建这个Date实例:
    
    >>> d = Date.__new__(Date)
    >>> d
    <__main__.Date object at 0x1006716d0>
    >>> d.year
    Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
    AttributeError: 'Date' object has no attribute 'year'
    >>>
    结果可以看到,这个Date实例的属性year还不存在,所以你需要手动初始化:
    
    >>> data = {'year':2012, 'month':8, 'day':29}
    >>> for key, value in data.items():
    ...     setattr(d, key, value)
    ...
    >>> d.year
    2012
    >>> d.month
    8
    >>>
    
    2020-04-17 15:07:27
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
建立联系方法之一 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载