实例化一个类但不要调用它的__init__方法

时间:2014-10-03 12:27:00

标签: python python-2.7 python-3.x

我想知道是否有任何方法可以创建类的对象,但不要调用它的__init__方法:

请看以下代码:

>>> class test():
    def __init__(self):
        print("an object created of this class")


>>> a=test()
an object created of this class
>>> 

我想要一种方法来创建类test()的对象,但不要打印an object created of this class

有什么办法吗?

更新 假设我已经实现了这个类和它的实例化20对象,我需要它的所有__init__方法。现在我想实例化一些新对象,但我不想再调用它的__init__方法了。有什么办法吗?

2 个答案:

答案 0 :(得分:4)

@classmethod可用于实现实例化对象的替代方法。所有实例都将调用__init__,但可以在类方法中运行其他代码:

class Test():
    def __init__(self):
        pass

    @classmethod
    def make_test(cls):
        t = cls()
        print("an object created of this class")
        return t

tests = [Test.make_test()  for i in range(3)]
# an object created of this class
# an object created of this class
# an object created of this class

newtest = Test()

答案 1 :(得分:2)

您可以直接致电__new__,但我认为您应该再考虑一下__init__方法的设计。

>>> class A(object):
...   def __init__(self):
...     print "In __init__"
...
>>> a = A()
In __init__
>>> b = A.__new__(A)
>>> type(b)
<class '__main__.A'>