我了解都__init__
和__new__
工作。我想知道是否有什么__init__
可以做的__new__
?
即可以使用__init__
以下模式替换:
class MySubclass(object):
def __new__(cls, *args, **kwargs):
self = super(MySubclass, cls).__new__(cls, *args, **kwargs)
// Do __init__ stuff here
return self
我想问的是,我想让Python OO的这一方面更适合我。
guido帖子中的一个可能答案(感谢@ fraca7):
例如,在pickle模块中,
__new__
用于反序列化对象时创建实例。在这种情况下,将创建实例,但__init__
不会调用该方法。
还有其他类似的答案吗?
我接受这个答案是对我自己的问题的“是”:
我想知道是否有什么
__init__
可以做的__new__
?
是的,与不同的是,在酸洗过程中不会执行__new__
您放入__init__
方法中的操作。 __new__
无法区分。
通过之前的学习,我们已经知道定义一个类时,我们经常会通过 __init__(self) 的方法在实例化对象的时候,对属性进行设置。 比如下面的例子: #!/usr/bin/env python3 # -*- coding: UTF-8 -*- class User(object): def __init__(self, name, age): self.name = na
问题内容: 在Python中,用于初始化不可变类型,通常用于初始化可变类型。如果将其从语言中删除,该怎么办(轻松)? 例如, 可以这样重写: 为澄清问题的范围:这不是一个问题关于如何以及是使用或它们之间有什么区别。这是一个问题,如果从语言中删除将会发生什么。有什么坏事吗?事情会变得很难或不可能吗? 问题答案: 您可以在中进行的所有操作都可以在中完成。 那么,为什么要使用? 因为您不必将实例存储在变
问题内容: 我一直在设置元类,如下所示: 但是我只是遇到了这样定义的元类: 有什么理由比另一个更喜欢吗? 更新 :请记住,我在询问有关在类中使用和的问题。我已经在另一堂课中了解了它们之间的区别。但是在元类中,我不能用来实现缓存,因为仅在元类中创建类时才调用它。 问题答案: 如果要在创建类之前更改属性dict或更改基元组,则必须使用。当看到参数时,该类对象已经存在。另外,如果要返回除所讨论类型的新创
问题内容: 在讨论元类时,文档指出: 当然,您也可以覆盖其他类方法(或添加新方法)。例如,在元类中定义自定义方法可在调用类时允许自定义行为,例如,并非总是创建新实例。 我的问题是:假设我想在调用类时具有自定义行为,例如缓存而不是创建新对象。我可以通过重写类的方法来做到这一点。什么时候我想用它定义一个元类?这种方法带来了什么是无法实现的? 问题答案: 直接回答你的问题是:当你想要做 更多的 不仅仅是
本文向大家介绍Python中__init__和__new__的区别详解,包括了Python中__init__和__new__的区别详解的使用技巧和注意事项,需要的朋友参考一下 __init__ 方法是什么? 使用Python写过面向对象的代码的同学,可能对 __init__ 方法已经非常熟悉了,__init__ 方法通常用在初始化一个类实例的时候。例如: 这样便是__init__最普通的用法了。但
本文向大家介绍浅谈python中的__init__、__new__和__call__方法,包括了浅谈python中的__init__、__new__和__call__方法的使用技巧和注意事项,需要的朋友参考一下 前言 本文主要给大家介绍关于python中__init__、__new__和__call__方法的相关内容,分享出来供大家参考学习,下面话不多说,来一起看看详细的介绍: 任何事物都有一个从