8.17 创建不调用init方法的实例
问题
你想创建一个实例,但是希望绕过执行 __init__()
方法。
解决方案
可以通过 __new__()
方法创建一个未初始化的实例。
你需要手动初始化:
讨论
当我们在反序列对象或者实现某个类方法构造函数时需要绕过 __init__()
方法来创建对象。
当你通过这种非常规方式来创建实例的时候,最好不要直接去访问底层实例字典,除非你真的清楚所有细节。 否则的话,如果这个类使用了 __slots__
、properties 、descriptors 或其他高级技术的时候代码就会失效。 而这时候使用 setattr()
方法会让你的代码变得更加通用。
Last updated
Was this helpful?