首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Python中从__init__返回值?

如何在Python中从__init__返回值?
EN

Stack Overflow用户
提问于 2010-03-22 19:35:11
回答 8查看 178.5K关注 0票数 126

我有一个带有__init__函数的类。

当创建一个对象时,我如何从这个函数返回一个整数值?

我写了一个程序,其中__init__执行命令行解析,我需要设置一些值。是否可以在全局变量中设置它并在其他成员函数中使用它?如果是这样的话,该怎么做呢?到目前为止,我在类外部声明了一个变量。并且设置一个函数不会反映在其他函数中??

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-03-22 19:37:52

__init__需要返回None。您不能(或者至少不应该)返回其他内容。

尝试创建您想要返回的任何实例变量(或函数)。

代码语言:javascript
复制
>>> 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
票数 142
EN

Stack Overflow用户

发布于 2010-03-22 19:46:09

你为什么要这么做呢?

如果您希望在调用类时返回其他对象,请使用__new__()方法:

代码语言:javascript
复制
class MyClass(object):
    def __init__(self):
        print "never called in this case"
    def __new__(cls):
        return 42

obj = MyClass()
print obj
票数 145
EN

Stack Overflow用户

发布于 2013-07-07 20:37:10

有问题的问题的示例用法可能如下所示:

代码语言:javascript
复制
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)
票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2491819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档