我想基于两个现有的 Enum (IntEnum) 类创建一个新的 Enum (IntEnum) 类。有一个可行的解决方案,如下所示:
from enum import unique, IntEnum
from itertools import chain
from collections import OrderedDict
@unique
class FirstEnumClass(IntEnum):
a = 1
b = 2
@unique
class SecondEnumClass(IntEnum):
c = 3
d = 4
# here a combined class is created:
CombinedEnumClass = unique(IntEnum('CombinedEnumClass', OrderedDict([(i.name, i.value) for i in chain(FirstEnumClass, SecondEnumClass)])))
Run Code Online (Sandbox Code Playgroud)
我的问题:有没有一种奇特的方法来实现这一点,以便有一个正确的类定义?就像重写一些元类方法一样?我想要这样的东西,这样也可以给出文档字符串:
@unique
class CombinedEnumClass(IntEnum):
""" docstring """
# magic needed here
Run Code Online (Sandbox Code Playgroud)
任何想法?谢谢!
假设我有一个预先存在的映射作为字典:
value_map = {'a': 1, 'b': 2}
Run Code Online (Sandbox Code Playgroud)
我可以这样创建一个枚举类:
from enum import Enum
MyEnum = Enum('MyEnum', value_map)
Run Code Online (Sandbox Code Playgroud)
并像这样使用它
a = MyEnum.a
print(a.value)
>>> 1
print(a.name)
>>> 'a'
Run Code Online (Sandbox Code Playgroud)
但后来我想为我的新枚举类定义一些方法:
def double_value(self):
return self.value * 2
Run Code Online (Sandbox Code Playgroud)
当然,我可以这样做:
class MyEnum(Enum):
a = 1
b = 2
@property
def double_value(self):
return self.value * 2
Run Code Online (Sandbox Code Playgroud)
但正如我所说,我必须使用预定义的值映射字典,所以我不能这样做。如何才能实现这一目标?我尝试从另一个像 mixin 一样定义此方法的类继承,但我无法弄清楚。
是否可以以任何方式插入指向 reStructuredText 文件中锚点的 Markdown 文件的链接?
我有一个项目文档,其中也包含 .rst 和 .md 文件,并且我正在使用m2rr Sphinx 扩展,但它似乎只支持文件内的 rst 锚链接。
有什么办法可以实现这一点吗?
我的页面上列出了一些字段,每个字段都有一个按钮,用于创建要转换为tinyMCE的文本区域,并且内容应使用来自ajax请求的字符串进行更新。像这样:
$("table td.bio-td").delegate(".btn", "click", function() {
...
var id = this.id;
$('#cont').html('<textarea id="mceeditor_'+id'">xyz</textarea>');
tinymce.EditorManager.execCommand('mceAddControl',true, 'mceeditor_'+id);
tinymce.activeEditor.setContent(ajax_str);
...
});
Run Code Online (Sandbox Code Playgroud)
除了一件事之外,代码工作正常:setContent() 行。我在 javascript 控制台中收到错误,activeEditor 为空。不知何故,tinyMCE 在 DOM 中找不到编辑器?那之前是怎么转成tinymce对象的呢?
我想知道是否可以通过列表理解来定义列表定义中的一系列元素.我希望通过以下方式实现这样的目标:
>> ['a', 'b', 1, 2, 3, 'c']
Run Code Online (Sandbox Code Playgroud)
我试过这个:
result_list = ['a', 'b', [i for i in range(3)] 'c']
Run Code Online (Sandbox Code Playgroud)
但这会产生 ['a', 'b', [1, 2, 3], 'c']
或者,如果我尝试使用元组,我会得到一个像这样的生成器对象: ['a', 'b', <generator object <genexpr> at 0x0000000002C9A9E8>, 'c']
能以某种方式完成吗?谢谢!