Как получить все атрибуты из init?
Есть класс Worker
class Worker:
def __init__(self, name, age, work) -> None:
self.name = name
self.age = age
self.work = work
def say_hello(self):
print(f"Привет, я {self.name}")
oleg = Worker('Олег', 43, "Танкист")
Хочу получить список всех атрибутов, которые объявил в __init__. Пока в голову пришло только такое решение
list_attr = [x for x in dir(oleg) if not x.startswith('__')]
# ['age', 'name', 'work']
Может, есть какой-то метод или более лаконичный способ?
Ответы (1 шт):
Автор решения: Aleksandr Fetisov
→ Ссылка
Можно использовать __dict__
class Worker:
def __init__(self, name, age, work) -> None:
self.name = name
self.age = age
self.work = work
oleg = Worker('Олег', 43, "Танкист")
list_attr = [attr for attr in oleg.__dict__ if not callable(getattr(oleg, attr)) and not attr.startswith("__")]
# ['name', 'age', 'work']