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

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

Мои объекты данных будут выглядеть следующим образом:

class SomeObject(BaseClass):
    def __init__(self):
        self.name = ""
        self.age = 0

class SomeOtherObject(BaseClass):
    def __init__(self):
        self.date = None
        self.description = ""

, где BaseClass реализует некоторое незначительное поведение, а производный класс просто инициализирует свои собственные атрибуты.

Я хотел бы иметь класс, который, учитывая объект данных, заполняет все отмеченные атрибуты некоторым случайным значением, но значение должно вписываться в контекст атрибута (имя = Джон Доу, возраст = 30). Поскольку данные должны быть действительными, и мне нужно добавить новые классы в будущем, мне нужно, чтобы мой объект, генерирующий данные, знал, какой тип значения он должен генерировать для каждого указанного атрибута c.

I Java, например, я мог бы добавить метаданные к атрибуту, например так:

@Name
private String name;

Есть ли способ реализовать это в python, так что мне не нужно обернуть атрибуты в моих объектах данных в пользовательские классы следующим образом:

...
    self.name = Name()
...

Я хотел бы сделать что-то вроде этого:

class SomeObject(BaseClass):
    def __init__(self):
        @name
        self.name = ""
        @age
        self.age = 0

def some_method():
    generator = DataGenerator()
    object = SomeObject()
    generator.fill_object(object)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...