我有一个带有__init__函数的类。
当创建一个对象时,我如何从这个函数返回一个整数值?
我写了一个程序,其中__init__执行命令行解析,我需要设置一些值。是否可以在全局变量中设置它并在其他成员函数中使用它?如果是这样的话,该怎么做呢?到目前为止,我在类外部声明了一个变量。并且设置一个函数不会反映在其他函数中??
发布于 2010-03-22 19:37:52
__init__需要返回None。您不能(或者至少不应该)返回其他内容。
尝试创建您想要返回的任何实例变量(或函数)。
>>> class Foo:
... def __init__(self):
... return 42
...
>>> foo = Foo()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __init__() should return None发布于 2010-03-22 19:46:09
你为什么要这么做呢?
如果您希望在调用类时返回其他对象,请使用__new__()方法:
class MyClass(object):
def __init__(self):
print "never called in this case"
def __new__(cls):
return 42
obj = MyClass()
print obj发布于 2013-07-07 20:37:10
有问题的问题的示例用法可能如下所示:
class SampleObject(object):
def __new__(cls, item):
if cls.IsValid(item):
return super(SampleObject, cls).__new__(cls)
else:
return None
def __init__(self, item):
self.InitData(item) #large amount of data and very complex calculations
...
ValidObjects = []
for i in data:
item = SampleObject(i)
if item: # in case the i data is valid for the sample object
ValidObjects.append(item)https://stackoverflow.com/questions/2491819
复制相似问题