假设我有一个类,我想引用一些元素的" __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')
当然我可以自己实现一个,但如果没有内置来超越这个问题,我会感到惊讶.
我有以下文件:
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
.
对于通用标题很抱歉,一旦我理解了我的问题的根源就会改变它我有以下结构:
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的包,因此
我有一个对象的包装类.我希望它在包装对象上应用应用于它的所有操作,例如,wrapper+=a
将产生与例如相同的结果wrapped+=a
.我想将它应用于所有运营商.有没有明确覆盖所有运算符而不覆盖每个运算符的简单方法?
我想这有点滥用这个功能,但我仍然很好奇它是否可以完成 - 我想做的事情如下:
with conditional(a):
print 1
Run Code Online (Sandbox Code Playgroud)
因此print 1
只有在== True时才执行该部分.这可能吗?
编辑:像下面的人一样,这是一种可怕的风格.这只是一个谜语\问题.不要在家里试试,不要因为胆小的人等.
假设我创建了一个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
我得到一个错误,说没有这样的属性.幕后发生了什么黑暗魔法?
python ×5
import ×2
django ×1
field ×1
forms ×1
obfuscation ×1
operators ×1
overriding ×1
package ×1
private ×1