Я пытаюсь случайным образом заполнить атрибуты некоторых данных объекта данными для тестирования.
Мои объекты данных будут выглядеть следующим образом:
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)