小编was*_*zil的帖子

Python 枚举组合

我想基于两个现有的 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)

任何想法?谢谢!

python enums metaprogramming metaclass python-3.5

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

如何使用附加方法从现有字典创建 Python Enum 类?

假设我有一个预先存在的映射作为字典:

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 一样定义此方法的类继承,但我无法弄清楚。

python enums mixins

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

Markdown 链接到 Sphinx 中的 reStructuredText 锚点

是否可以以任何方式插入指向 reStructuredText 文件中锚点的 Markdown 文件的链接?

我有一个项目文档,其中也包含 .rst 和 .md 文件,并且我正在使用m2rr Sphinx 扩展,但它似乎只支持文件内的 rst 锚链接。

有什么办法可以实现这一点吗?

python anchor markdown restructuredtext python-sphinx

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

tinyMCE setContent - 动态(jQuery)添加文本区域

我的页面上列出了一些字段,每个字段都有一个按钮,用于创建要转换为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对象的呢?

null jquery tinymce dynamic

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

Python使用列表推导定义列表中的元素

我想知道是否可以通过列表理解来定义列表定义中的一系列元素.我希望通过以下方式实现这样的目标:

>> ['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']

能以某种方式完成吗?谢谢!

python list-comprehension list

-2
推荐指数
2
解决办法
109
查看次数