Python从类

时间:2018-03-24 13:26:01

标签: python class object built-in-types

我试图创建一个运行少量文件的应用程序,使其有条理,但是我在python中遇到了一些潜伏者,并试图从settings.py中的main.py导入值。

错误类型我看起来像这样,取决于我如何尝试获取对象的值:

self.code = sets.run().self.code
AttributeError: 'NoneType' object has no attribute 'self'

self.code = sets.code
AttributeError: 'settings' object has no attribute 'code'

整个想法是让自己变得自我。另一个文件中的值不使用return但只是指定元素。

简单示例代码:

主档案:

import settings
def run():
    sets = settings.settings()
    code = sets.code 
run()

设置文件:

class settings():
    def run(self):
       self.code = somevalue

所以基本上是我试图做的最小扩展,我可以返回运行中的self.code,但这不是我想要的,因为我有很多settings_values和id喜欢在不同的文件中访问它们。 非常感谢。

  

编辑:   那么,如果我需要在import settingsmain但是只要我开始运行main_run()时只运行()设置而不仅仅是获取变量,我该如何处理?   我不想通过保存到文件来复杂化,而不是阅读列表()我只需要访问它们并且只运行

     

basicaly:我的设置从pickle得到一个很长的列表,而不是让一些操作返回代码组合和许多其他self.settings,需要在程序(main)启动时启动而不是整个True While inside run()值是固定的,除非我启动refresh_settings()并更改设置而不是重新编译数据并且程序返回true而

2 个答案:

答案 0 :(得分:0)

第一个错误:run没有return语句,因此默认返回None。然后,您尝试None.self.code并明显获得AttributeError

第二个错误:看起来code实例的属性settings在第一次执行settings.run时设置。在运行sets.code之前,您可能会尝试访问settings.run

你的例子不是完全独立的,所以我不能告诉你更多这个一般的指示。

答案 1 :(得分:0)

您需要__init__功能,您的课程应如下所示:

class settings():
def __init__(self,code):
    self.code = code

现在你可以制作一个像这样的变量

sets = settings(“something”)

以这种方式访问​​变量中的code

code = sets.code

或者如果您真的想要run()位,那么您的代码将是:

class settings():
def __init__(self,code):
    self.code = code
def run(self):
    return self.code