I'm looking for a way to add a dynamic property to a class (not an instance). Something like Django does with models' managers. Basically what I'm trying to achieve is this:
class Manager:
def __init__(self, table_name):
self.table_name = table_name
# rest omitted for brevity
class BaseModel:
# somehow create a new instance of Manager
# and send the init param based off BaseModel's child
# class table_name Meta property
class MyModel(BaseModel):
class Meta:
table_name = 'my_table'
MyModel.manager # should return an instance of Manager(table_name='my_table')
I've tried using the constructor (__new__
), but that obviously only works after I create at least an instance of MyModel
.