пользовательский базовый класс в python - PullRequest
0 голосов
/ 03 апреля 2020

Я работал с библиотекой python, затем заметил, что определенный базовый класс c определен и все остальные классы производные от него. мой вопрос, почему нам нужно такое определение и структура при кодировании библиотеки

class baseclass(object):
 def __init__(self):
    raise NotImplementedError("this is an abstract class")

 def __enter__(self):
    raise NotImplementedError("this is an abstract class")

 def __exit__(self, exc_type, exc_value, traceback):
    raise NotImplementedError("this is an abstract class")

class Myclass(baseclass):
  def __init__(self):
    ""

 def __enter__(self):
   ""

 def __exit__(self, exc_type, exc_value, traceback):
    ""
 def method1(self):
   pass

1 Ответ

0 голосов
/ 03 апреля 2020

Абстрактные классы обычно являются родительскими классами, вы можете думать, что родительский класс имеет переменные класса, которые дочерний класс унаследует от Parent. Абстрактные классы зависят от ситуации, как указано в ответе @Mad Physicist. Вы можете рассмотреть возможность использования абстрактных классов, если любое из этих утверждений применимо к вашей ситуации:

Вы хотите разделить код между несколькими тесно связанными классами. Вы ожидаете, что классы, которые расширяют ваш абстрактный класс, имеют много общих методов или полей или требуют модификаторов доступа, кроме publi c (например, protected и private). Вы хотите объявить незаполненные c или неконечные поля. Это позволяет вам определять методы, которые могут обращаться и изменять состояние объекта, к которому они принадлежат.

...