小编Nih*_*ihl的帖子

增加IPython历史记录长度

我试过在这篇文章之后增加IPython历史长度: 通过改变来控制ipython历史长度.c.TerminalInteractiveShell.history_length~/.ipython/profile_default/ipython_config.py

配置文件似乎在启动时执行(如果我放入print('test-startup')文件,它在我启动IPython时打印)

但它似乎没有任何影响,无论如何从ipython中检查历史大小(有点像你echo $HISTSIZE; echo $HISTFILESIZE在bash中怎么做?)

python ipython input-history

9
推荐指数
2
解决办法
867
查看次数

从默认参数设置类属性

我想自动将默认参数设置为类属性。例如,我有(有更多参数,比如一两个):

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)

但我不知道这段代码中是否存在一些潜在的不安全行为。

python

5
推荐指数
1
解决办法
747
查看次数

标签 统计

python ×2

input-history ×1

ipython ×1