【发布时间】:2015-11-12 12:11:43
【问题描述】:
假设我们有这个类:
class Custom:
@classmethod
def get_choices(cls):
# use cls attributes to return a list
mapping = {"key": ... }
我想将get_choices() 返回的值关联到key。应该用什么代码代替占位符 ...?
编辑:我想保持问题与上下文无关(在我看来,这个要求很常见,但我可能会有偏见)。正如 cmets 中所建议的,我将提供更多细节,因为我们似乎都关心“最直接的代码”:
我正在开发一个 Django 应用程序,我希望 枚举 值与使用它们的 Models 分开。在我看来,一个自然的解决方案是创建一个 enumeration.py 模块,然后我可以在其中为每个枚举定义一个 class(该类至少有一个类方法来 generate 值的集合)。这是示例中的get_choices()。
现在,由于业务逻辑,我需要将这些选择映射到一个键。这种映射在逻辑上与枚举耦合,将它们放在同一个类中似乎是一个很好的结构(给客户端代码提供统一和显式的访问,以类名为前缀)。
【问题讨论】:
-
你不能在类中这样做,
@classmethods 在类定义完成之前实际上是不可调用的。 -
@jonrsharpe 谁会猜到 C++ 正在用 Python 中没有的便利来破坏它的用户;)
-
这似乎不太可能!我昨天回答了一个与切线相关的问题,您可能会发现我的回答很有用:stackoverflow.com/a/32069776/3001761
标签: python class python-3.x