I am new to Python and I wonder if there is any way to aggregate methods into ‘subspaces’. I mean something similar to this syntax:
smth = Something() smth.subspace.do_smth() smth.another_subspace.do_smth_else()
I am writing an API wrapper and I’m going to have a lot of very similar methods (only different URI) so I though it would be good to place them in a few subspaces that refer to the API requests categories. In other words, I want to create namespaces inside a class. I don’t know if this is even possible in Python and have know idea what to look for in Google.
I will appreciate any help.
Advertisement
Answer
One way to do this is by defining subspace and another_subspace as properties that return objects that provide do_smth and do_smth_else respectively:
class Something:
@property
def subspace(self):
class SubSpaceClass:
def do_smth(other_self):
print('do_smth')
return SubSpaceClass()
@property
def another_subspace(self):
class AnotherSubSpaceClass:
def do_smth_else(other_self):
print('do_smth_else')
return AnotherSubSpaceClass()
Which does what you want:
>>> smth = Something() >>> smth.subspace.do_smth() do_smth >>> smth.another_subspace.do_smth_else() do_smth_else
Depending on what you intend to use the methods for, you may want to make SubSpaceClass a singleton, but i doubt the performance gain is worth it.