我是Python新手,我想知道是否有任何方法可以将方法聚合到“子空间”中。我的意思是类似于以下语法:
smth = Something()
smth.subspace.do_smth()
smth.another_subspace.do_smth_else()
字符串
我正在写一个API Package 器,我会有很多非常相似的方法(只是URI不同),所以我想把它们放在几个引用API请求类别的子空间中会很好。换句话说,我想在一个类中创建命名空间。我不知道这在Python中是否可能,也不知道在Google中应该找什么。
我将感激任何帮助。
3条答案
按热度按时间dm7nw8vv1#
一种方法是将
subspace
和another_subspace
定义为返回分别提供do_smth
和do_smth_else
的对象的属性:字符串
它可以做你想要的:
型
根据您打算使用这些方法的目的,您可能希望使
SubSpaceClass
成为单例,但我怀疑这样做是否值得。fbcarpbf2#
几年前我有了这个需求,想出了这个:
字符串
运行时:
型
这与Py2和Py3兼容。在Py3中可以进行一些性能优化,因为
__set_name__
告诉我们命名空间的名称,并允许缓存示例注册表。ufj5ltwl3#
一个简单的方法是使用
SimpleNamespace
:字符串
简单用途:
型
在这种情况下,不需要引用内部类变量的项可以与
@staticmethod
定义一起使用,并且也可以在没有示例化的情况下操作:型
对于更复杂的操作,需要引用另一个值,类需要示例化,以便可以设置内部参数:
型
在使用中,可以在创建对象后引用这些值:
型