Есть ли итеративный метод применения атрибутов к классу? - PullRequest
1 голос
/ 09 мая 2020

Гипотетически говоря, предположим, что у кого-то есть это class:

class Person:
  def __init__(self, lastName, firstName, age,):
    self.lastName = lastName
    self.firstName = firstName
    self.age = age

Чтобы добавить другие атрибуты, это будет тот же метод. Однако запись self.attribute = attribute через некоторое время станет чрезвычайно утомительной, особенно если потребуется дюжина или более атрибутов в случаях более крупного класса.

Есть ли способ итеративно применить имя переменной к атрибуту ? Возможно, установив al oop и применив атрибуты автономно?

Ответы [ 2 ]

2 голосов
/ 09 мая 2020

Используйте модуль dataclasses - это снижает утомительность создания класса

>>> from dataclasses import dataclass
>>> @dataclass
... class F:
...     attr1: str
...     attr2: str
...     attr3: str
...     attr4: str
>>> f = F('x','y','z','a')
>>> f
F(attr1='x', attr2='y', attr3='z', attr4='a')
>>> f.attr1
'x'
0 голосов
/ 09 мая 2020

Вы можете иметь произвольные logi c внутри метода __init__, в конце дня он функционирует. Так что нет проблем с чем-то вроде этого

 class myclass:
      def __init__(self,attributes):
         for att in attributes: self.att = att

РЕДАКТИРОВАТЬ: Хотя это не то, что вы ищете, вы можете попробовать установить атрибуты после инициализации следующим образом

atts = dict(#att:value dictionary)
for att,val in atts: setattr(myclass,att,val)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...