嵌套类以模仿静态成员

时间:2011-06-03 17:06:57

标签: python api class-design

我试图通过在另一个类中嵌套一个类来模仿“静态”成员,以便定义类常量。

f.e。

class foo:
  class NoAuthActions: Action1, Action2, Action3 = ["action1", "action2", "action3"]
  class AuthActions: Action4, Action5, Action6 = ["action4", "action5", "action6"]

在python中有更好的方法吗?

我这样做是为了更好地设计API库。

修改

API是一个基于Web请求(谷歌地图,四方等)..所以我只需要一个更好的方式来包装它。由于API本身由用户可以做而不能做的动作类型组成,我需要一种更好地组织它的方法。

所以命名空间听起来像是一种更好的订购方式,因为请求api中的每个端点都有操作(更明智的是我提到我采取这种方法,因为所有的操作有相同的基本网址。)

简单地说:我需要一种设计,API可以很容易地使用所有操作,并使所需的身份验证尽可能地与API解耦。毕竟,我只需要一个oauth令牌或application_ID

感谢

2 个答案:

答案 0 :(得分:3)

为什么是内部阶级?

class Foo:
    action1, action2, action3 = ["action1", "action2", "action3"]

将创建一个包含三个类属性Fooaction1action2的类action3。您可以通过Foo.action1foo.action1访问Foo实例foo。要更改类变量的值,请使用

Foo.action1 = "new_action"

foo.__class__.action1 = "new_action"

答案 1 :(得分:0)

如果您希望这些项目是只读常量,请考虑使用此问题的答案之一Class-level read-only properties in Python