我试图创建一个运行少量文件的应用程序,使其有条理,但是我在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 settings
中main
但是只要我开始运行main_run()时只运行()设置而不仅仅是获取变量,我该如何处理? 我不想通过保存到文件来复杂化,而不是阅读列表()我只需要访问它们并且只运行basicaly:我的设置从pickle得到一个很长的列表,而不是让一些操作返回代码组合和许多其他self.settings,需要在程序(main)启动时启动而不是整个True While inside run()值是固定的,除非我启动refresh_settings()并更改设置而不是重新编译数据并且程序返回true而
答案 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