Как я использую в методе переменную класса, который стоит различно в классе и Вашем субклассе?

Давайте предполагать, что у меня есть такой класс:

class Hola(object):
    NOMBRE = 'hola'

    def muestro_cosas(self):
        print('Mi nombre es {}'.format(Hola.NOMBRE))


class HolaPequenito(Hola):
    NOMBRE = 'hola_pequenito'

    ...

Как видно, HolaPequenito это субкласс Hola.

Сейчас, я реализую осуществление вещей, в которых я нуждаюсь в том, чтобы использовать переменную класса NOMBRE.

  • Если у меня есть инстанция Hola, я сделаю print (Hola.NOMBRE).
  • Если у меня есть инстанция HolaPequenito, я сделаю print (HolaPequenito.NOMBRE).

Однако, есть разы, в которых я не знаю, ли буду я instanciando Hola или HolaPequenito, так как instancío dinámicamente внутри большого процесса, в котором я нуждаюсь в том, чтобы узнать стоимость NOMBRE класса, который есться instanciado, и делать что-то подобное:

class Hola(object):
    NOMBRE = 'hola'

    def comprueba_cosas(self):
        if NOMBRE == 'hola':  # aquí debo usar la variable de clase
           ...
        elif NOMBRE == 'hola_pequenito':
           ...

А именно: если instancío Hola или HolaPequenito не зная, которая из двух я instanciando: как я могу соглашаться на переменную класса NOMBRE соответствующая, чтобы делать какую-то эвристику?

Больше я достиг он состоял в том, чтобы определять метод класса, который возвращал бы это мне:

class Hola(object):
    NOMBRE = 'hola'

    @classmethod 
    def bah(cls):     
        return cls.NOMBRE

Но я не знаю, как сочетать это, чтобы работать с переменной класса NOMBRE внутри метода.

10
задан 15.05.2019, 13:43
0 ответов