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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 9,473评论 1 10
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,287评论 18 399
  • 20- 枚举,枚举原始值,枚举相关值,switch提取枚举关联值 Swift枚举: Swift中的枚举比OC中的枚...
    iOS_恒仔阅读 6,897评论 1 6
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,107评论 19 139
  • 123.继承 一个类可以从另外一个类继承方法,属性和其他特征。当一个类继承另外一个类时, 继承类叫子类, 被继承的...
    无沣阅读 5,275评论 2 4

友情链接更多精彩内容