我想知道是否有任何方法可以创建类的对象,但不要调用它的__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__
方法了。有什么办法吗?
答案 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'>