Предотвращение прямого создания экземпляра класса в Python ⇐ Python
Предотвращение прямого создания экземпляра класса в Python
У меня есть суперкласс с методом, который вызывает другие методы, определенные только в его подклассах. Вот почему, когда я создаю экземпляр своего суперкласса и вызываю его метод, он не может найти метод и выдает ошибку.
Вот пример:
класс SuperClass(объект): защита метод_one (сам): значение = self.subclass_method() вывести значение класс SubClassOne (Суперкласс): Защиту subclass_method (сам): вернуть «подкласс 1» класс SubClassTwo (Суперкласс): Защиту subclass_method (сам): вернуть 'нубкласс 2' s1 = ПодклассОдин() s1.method_one() s2 = ПодклассДва() s2.method_one() с = СуперКласс() c.method_one() # Полученные результаты: # подкласс 1 # нубкласс 2 # Traceback (последний вызов): # Файл "abst.py", строка 28, в # c.method_one() # Файл "abst.py", строка 4, в методе_one # значение = self.subclass_method() # AttributeError: объект «Суперкласс» не имеет атрибута «subclass_method». Я думал об изменении __init__ суперкласса и проверке типа объекта при создании нового экземпляра. Если объект принадлежит суперклассу, возникает ошибка. Однако я не уверен, что это питонический способ сделать это.
Есть рекомендации?
У меня есть суперкласс с методом, который вызывает другие методы, определенные только в его подклассах. Вот почему, когда я создаю экземпляр своего суперкласса и вызываю его метод, он не может найти метод и выдает ошибку.
Вот пример:
класс SuperClass(объект): защита метод_one (сам): значение = self.subclass_method() вывести значение класс SubClassOne (Суперкласс): Защиту subclass_method (сам): вернуть «подкласс 1» класс SubClassTwo (Суперкласс): Защиту subclass_method (сам): вернуть 'нубкласс 2' s1 = ПодклассОдин() s1.method_one() s2 = ПодклассДва() s2.method_one() с = СуперКласс() c.method_one() # Полученные результаты: # подкласс 1 # нубкласс 2 # Traceback (последний вызов): # Файл "abst.py", строка 28, в # c.method_one() # Файл "abst.py", строка 4, в методе_one # значение = self.subclass_method() # AttributeError: объект «Суперкласс» не имеет атрибута «subclass_method». Я думал об изменении __init__ суперкласса и проверке типа объекта при создании нового экземпляра. Если объект принадлежит суперклассу, возникает ошибка. Однако я не уверен, что это питонический способ сделать это.
Есть рекомендации?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Доступ к атрибуту экземпляра родительского класса из экземпляра дочернего класса?
Anonymous » » в форуме Python - 0 Ответы
- 54 Просмотры
-
Последнее сообщение Anonymous
-