【发布时间】:2018-01-21 15:02:58
【问题描述】:
我是 Python 新手,我想知道是否有任何方法可以将方法聚合到“子空间”中。我的意思类似于这种语法:
smth = Something()
smth.subspace.do_smth()
smth.another_subspace.do_smth_else()
我正在编写一个 API 包装器,我将有很多非常相似的方法(只是不同的 URI),所以我认为最好将它们放在一些引用 API 请求类别的子空间中。换句话说,我想在一个类中创建命名空间。我不知道这在 Python 中是否可行,并且知道在 Google 中寻找什么。
我将不胜感激。
【问题讨论】:
-
这些真的需要是方法吗?他们需要访问任何州吗?你可以只嵌套模块吗?
-
像
do_smth这样的方法是否需要像常规方法一样访问实例? -
我将登录信息存储为实例的属性。我需要从每种方法中访问它们。也许有更好的方法来存储它们。
-
有趣的概念。我想你可以通过在
__init__方法中执行self.subspace = self.another_subspace = self来伪造它。当然,这不是创建单独的名称空间,尽管它确实允许您描述的调用语法。 OTOH,它不会阻止人们做smth.do_smth()。 -
不会
Something.__init__(... self.subclass = Subclass(owner=self), self.another_subclass = AnotherSubclass(owner=self...,有点实现这个?子类可以从它们的所有者那里查找他们需要的任何信息,并且您的命名空间将符合您的意图。子类将有一个do_smth方法。
标签: python python-3.x class namespaces