Как правильно использовать метод класса в своем подклассе, который, возможно, не будет создан? - PullRequest
0 голосов
/ 17 апреля 2020

Учитывая родительский класс:

class Parent():
   _private_attr: Int = None

   @classmethod
   def set_private_attr(cls, value):
      if not type(value) is int:
         raise ValueError()
      cls._private_attr = value

Как использовать set_private_attr в подклассе, учитывая, что, возможно, он не будет создан, и поэтому я не могу использовать super() в __init__ ?

Например:

def SubClass(Parent):
   Parent.set_private_attr(a_value)

Это правильно? Есть лучший способ сделать это?

1 Ответ

1 голос
/ 17 апреля 2020

Вам нужно наследовать от Parent, тогда производный класс может использовать метод класса set_private_attr().

Вот пример.

class Parent():
   _private_attr = None

   @classmethod
   def set_private_attr(cls, value):
      cls._private_attr = value

class Foo(Parent):
    pass

foo = Foo()
foo.set_private_attr("bar")

Если вы хотите установить это перед построением производный класс:

Foo.set_private_attr("bar")
foo = Foo()
print(foo._private_attr)
...