我试过在这篇文章之后增加IPython历史长度:
通过改变来控制ipython历史长度.c.TerminalInteractiveShell.history_length~/.ipython/profile_default/ipython_config.py
配置文件似乎在启动时执行(如果我放入print('test-startup')文件,它在我启动IPython时打印)
但它似乎没有任何影响,无论如何从ipython中检查历史大小(有点像你echo $HISTSIZE; echo $HISTFILESIZE在bash中怎么做?)
我想自动将默认参数设置为类属性。例如,我有(有更多参数,比如一两个):
class Foo:
def __init__(self,a=1,b=2,c=3,...):
self.a = a
self.b = b
self.c = c
...
Run Code Online (Sandbox Code Playgroud)
我想自动定义属性,而不必self.x = x一直在__init__正文中重写。
我可以使用类似的东西:
class Foo:
def __init__(self, **kwargs):
for attr, value in kwargs.items():
setattr(self,attr,value)
Run Code Online (Sandbox Code Playgroud)
但现在我不能给他们默认值。我想要的是一些函数,它可以为我提供带有默认值的参数字典:
class Foo:
def __init__(self,a=1,b=2,c=3,...,**kwargs):
defargs = somefunction()
Run Code Online (Sandbox Code Playgroud)
与defargsbeing {'a':1,'b':2,'c':3,...}(但不包含kwargs)。
我设法做的最接近的事情是:
class Foo:
def __init__(self,a=1,b=2,c=3,...,**kwargs):
defargs=locals()
defargs.pop('self')
defargs.pop('kwargs')
for attr, value in defargs.items():
setattr(self,attr,value)
Run Code Online (Sandbox Code Playgroud)
但我不知道这段代码中是否存在一些潜在的不安全行为。