小编ola*_*ndo的帖子

python:以有条理的方式引用"私有"变量的名称

假设我有一个类,我想引用一些元素的" __dict__(比如,我要复制的字典,并删除不能腌制的属性),从里面的类.

问题是,这些属性是"私有的"所以我的代码看起来像这样

class MyClasss(object):
    def __init__(self):
          self.__prv=1
    def __getstate__(self):
          ret=self.__dict__.copy()
          del ret['_MyClass__prv']
Run Code Online (Sandbox Code Playgroud)

我在del语句中显式引用了类名,这对我来说有点难看.还有更好的东西吗?就像是MyClass.getPrivateString('prv')

当然我可以自己实现一个,但如果没有内置来超越这个问题,我会感到惊讶.

python obfuscation private

2
推荐指数
1
解决办法
429
查看次数

python - 从包中导入子包不工作?

我有以下文件:

pack/__init__.py
pack/subpack/__init.__py
pack/subpack/mod2.py
Run Code Online (Sandbox Code Playgroud)

以下代码在最后一行失败:

from pack import * #should import everything
print subpack      #NameError: name 'subpack' is not defined
Run Code Online (Sandbox Code Playgroud)

我希望导入子包 - 为什么会有差异,我怎样才能克服它?重要:通过"克服"我的意思是能够参考而subpack无需一直写pack.subpack.

python import package

2
推荐指数
1
解决办法
4339
查看次数

python和__import__的问题

对于通用标题很抱歉,一旦我理解了我的问题的根源就会改变它我有以下结构:

foo/
foo/__init__.py
foo/bar/
foo/bar/__init__.py
foo/bar/some_module.py
Run Code Online (Sandbox Code Playgroud)

当我尝试通过这样做导入some_module时:

from foo.bar import some_module
Run Code Online (Sandbox Code Playgroud)

它就像一个魅力.但这对我没有好处,因为我只知道要在运行时导入的模块的名称.所以,如果我尝试:

from foo.bar import *
mod=__import__('some_module')
Run Code Online (Sandbox Code Playgroud)

我收到一个错误.难道我做错了什么?有一个更好的方法吗?为什么会这样?

这是为什么?我不太确定我完全理解python包背后的概念.我认为它们等同于java的包,因此

python import

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

覆盖python中的所有运算符

我有一个对象的包装类.我希望它在包装对象上应用应用于它的所有操作,例如,wrapper+=a将产生与例如相同的结果wrapped+=a.我想将它应用于所有运营商.有没有明确覆盖所有运算符而不覆盖每个运算符的简单方法?

python overriding operators

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

如何在"with"块中有条件地执行代码?

我想这有点滥用这个功能,但我仍然很好奇它是否可以完成 - 我想做的事情如下:

with conditional(a):
    print 1
Run Code Online (Sandbox Code Playgroud)

因此print 1只有在== True时才执行该部分.这可能吗?

编辑:像下面的人一样,这是一种可怕的风格.这只是一个谜语\问题.不要在家里试试,不要因为胆小的人等.

python with-statement

0
推荐指数
1
解决办法
843
查看次数

Django:字段存储在表单实例中的哪个位置

假设我创建了一个django表单,其中包含一个单选框:

class PlaylistsForm(forms.Form):
    choices=forms.ChoiceField( widget=forms.RadioSelect(), CHOICES,label="choices")
Run Code Online (Sandbox Code Playgroud)

如果我尝试实例化表单,并且form.choices我得到实例没有属性的错误choices.你能不能把我介绍给它解释字段创建背后的魔力,其次,我如何访问这些字段?

编辑:说清楚:我想知道为什么,给定一个实例PlaylistsForm, print form.choices我得到一个错误,说没有这样的属性.幕后发生了什么黑暗魔法?

forms django field

0
推荐指数
1
解决办法
561
查看次数