Я пытаюсь реализовать super()
за this Ответьте так.Как пользователь super() в наследовании класса python
У меня есть следующий класс:
class Collection():
"""returns a collection curser from mongodb"""
def __init__(self, db, collection_name):
self.db = db
self.collection_name = collection_name
if not hasattr(self.__class__, 'client'):
self.__class__.client = MongoClient()
self.data_base = getattr(self.client, self.db)
self.collection = getattr(self.data_base, self.collection_name)
и следующий подкласс:
class User(Collection):
def __init__(self, db, collection_name):
super(User, self).__init__(db, collection_name)
Назвав Collection
класс работает отлично:
agents = Collection('hkpr_restore','agents')
Вызов подкласса:
user = User('hkpr_restore','agents')
Я получаю сообщение об ошибке:
Traceback (most recent call last):
File "main.py", line 37, in <module>
user = User('hkpr_restore','agents')
File "filepath/user.py", line 35, in __init__
super(User, self).__init__(db, collection_name)
TypeError: must be type, not classobj
Что я делаю неправильно?
Возможно, вы захотите сделать 'Collection.client = ...' вместо 'self .__ class __. Client = ...', чтобы каждый подкласс имел один и тот же клиент, и вы используете меньше соединений. Вы также можете использовать глобальное имя вместо атрибута класса. –
Если вы используете Python 2, вы должны добавить тег Python 2 на свой вопрос. –