gpt4 book ai didi

python - IPython 可使用自定义类进行配置

转载 作者:太空宇宙 更新时间:2023-11-03 18:21:07 24 4
gpt4 key购买 nike

我正在尝试使用 IPython 配置系统为我自己的类提供配置参数。我尝试了一个简单的测试。

from IPython.config.configurable import Configurable
from IPython.utils.traitlets import Int, Unicode, Bool

class MyConfigTest(Configurable):
user_name = Unicode(u'Fred', config=True)

def __init__(self, config=None):
super(MyConfigTest, self).__init__(config=config)

def display(self):
print 'my name is ' + self.user_name

然后将其放入我的配置文件中:

c.MyConfigTest.user_name = 'John'

当我运行 IPython --debug 时,我可以看到我的配置变量正在被正确读取:

[TerminalIPythonApp] Config changed:
[TerminalIPythonApp] {'MyConfigTest': {'user_name': 'John'}, 'TerminalIPythonApp
': {'log_level': 10}}

但是当我在代码中实例化 MyConfigTest 时,它仍然具有默认值:

In [1]: x = MyConfigTest()

In [2]: x
Out[2]: <__main__.MyConfigTest at 0x2e1dc50>

In [3]: x.display()
my name is Fred

我读入的变量是否错误?我通读了一些 IPython 源代码,但没有看到任何明显的东西。

最佳答案

配置系统创建一个配置对象,该对象在类实例化时传入,以对其进行配置。如果你想在 IPython 中使用它,你可以这样做:

x = MyConfigTest(config=get_ipython().config)

不过,我们并不是真的想让这个系统在 IPython 中配置用户对象。这是可能的,但不是配置系统设计的用例。它专为在 IPython 扩展中配置类而设计,并且足够通用,您可以将它用于完全独立的应用程序(通过子类化 IPython.config.application.Application)。

关于python - IPython 可使用自定义类进行配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24121679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com