Как получить переменные экземпляра класса Python внутри __init__? - PullRequest
0 голосов
/ 11 апреля 2019

Я хотел бы знать, есть ли способ получить переменные экземпляра класса, которые находятся внутри init .

Я видел что-то близкое к тому, что я ищу, за исключением того, что я ищу способ получить переменные экземпляра, а не переменные класса. Связанная тема: Цикл по атрибутам переменной класса в python

Скажем, у меня есть такой класс, как:

class Identity:
    table = "tb_identity"
    def __init__(self, id="", app_name="", app_code="", state="", criticality=""):
        self.id = id
        self.app_name = trigram_name
        self.app_code = trigram_irt
        self.state = state
        self.criticality = criticality

Я бы хотел получить список с именами переменных экземпляра, например:

["id","app_name","app_code","state","criticality"]

С чем-то вроде:

members = [getattr(Identity,attr) for attr in dir(Identity) if not attr.startswith("__")]

Я получаю только "tb_identity" и даже не "table". Но это не главная проблема, я ищу что-то вроде:

["id","app_name","app_code","state","criticality"]

Есть ли какой-нибудь правильный способ получить эти переменные внутри init ?

Спасибо за ваше время.

Редактировать: Есть ли способ сделать это без инстанцирования?

1 Ответ

0 голосов
/ 11 апреля 2019

Попробуйте

class Identity:
    table = "tb_identity"
    def __init__(self, id="", app_name="", app_code="", state="", criticality=""):
        self.id = id
        self.app_name = 'trigram_name'
        self.app_code = 'trigram_irt'
        self.state = state
        self.criticality = criticality
        print(self.__dict__.keys())

i = Identity()

выход

dict_keys(['id', 'app_name', 'app_code', 'state', 'criticality'])
...