You have been tasked with implementing a class called `ReactiveProperty`, which is a generic class that extends the `ReactiveValue` class. The `ReactiveProperty` class represents a property whose value can dynamically change and can react to changes.

The `ReactiveProperty` class has the following attributes and methods:

Attributes:
- `init_value` (optional): A value of type `T` that represents the initial value of the reactive property. Defaults to `Nothing`.
- `read_only`: A boolean value indicating whether the reactive property is read-only or not. If `True`, the property cannot be modified after initialization. If `False`, the property can be modified. Defaults to `False`.
- `modifier`: A function that takes any input and returns a `Modifier` object. The `Modifier` object is responsible for modifying the input before storing it in the reactive property. The default implementation of the function is the identity function (`lambda _: identity`), which means the input is not modified.
- `validator`: A function that takes two arguments, the current value of the reactive property and the new value being assigned. It returns the validated value that will be stored in the reactive property. The default implementation of the function is `lambda _, v: v`, which means no validation is performed.

Methods:
- `__init__`: The class constructor that initializes the `ReactiveProperty` object. It takes four parameters:
  - `init_value` (optional): The initial value of the reactive property. Defaults to `Nothing`.
  - `read_only` (optional): A boolean value indicating whether the reactive property is read-only or not. Defaults to `False`.
  - `modifier` (optional): A function that modifies the input before storing it in the reactive property. Defaults to the identity function (`lambda _: identity`).
  - `validator` (optional): A function that validates the new value being assigned to the reactive property. Defaults to `lambda _, v: v`.

Your task is to implement the `ReactiveProperty` class according to the given specifications.
0ed3a63a-9cdb-4120-b08b-bee55e9a8b14
Se te ha asignado la tarea de implementar una clase llamada `ReactiveProperty`, que es una clase genérica que extiende la clase `ReactiveValue`. La clase `ReactiveProperty` representa una propiedad cuyo valor puede cambiar dinámicamente y puede reaccionar a los cambios.

La clase `ReactiveProperty` tiene los siguientes atributos y métodos:

Atributos:
- `init_value` (opcional): Un valor de tipo `T` que representa el valor inicial de la propiedad reactiva. Por defecto es `Nothing`.
- `read_only`: Un valor booleano que indica si la propiedad reactiva es de solo lectura o no. Si es `True`, la propiedad no puede ser modificada después de la inicialización. Si es `False`, la propiedad puede ser modificada. Por defecto es `False`.
- `modifier`: Una función que toma cualquier entrada y devuelve un objeto `Modifier`. El objeto `Modifier` es responsable de modificar la entrada antes de almacenarla en la propiedad reactiva. La implementación por defecto de la función es la función de identidad (`lambda _: identity`), lo que significa que la entrada no se modifica.
- `validator`: Una función que toma dos argumentos, el valor actual de la propiedad reactiva y el nuevo valor que se está asignando. Devuelve el valor validado que se almacenará en la propiedad reactiva. La implementación por defecto de la función es `lambda _, v: v`, lo que significa que no se realiza ninguna validación.

Métodos:
- `__init__`: El constructor de la clase que inicializa el objeto `ReactiveProperty`. Toma cuatro parámetros:
  - `init_value` (opcional): El valor inicial de la propiedad reactiva. Por defecto es `Nothing`.
  - `read_only` (opcional): Un valor booleano que indica si la propiedad reactiva es de solo lectura o no. Por defecto es `False`.
  - `modifier` (opcional): Una función que modifica la entrada antes de almacenarla en la propiedad reactiva. Por defecto es la función de identidad (`lambda _: identity`).
  - `validator` (opcional): Una función que valida el nuevo valor que se está asignando a la propiedad reactiva. Por defecto es `lambda _, v: v`.

Tu tarea es
submitted
Se te ha asignado la tarea de implementar una clase llamada `ReactiveProperty`, que es una clase genérica que extiende la clase `ReactiveValue`. La clase `ReactiveProperty` representa una propiedad cuyo valor puede cambiar dinámicamente y puede reaccionar a los cambios.

La clase `ReactiveProperty` tiene los siguientes atributos y métodos:

Atributos:
- `init_value` (opcional): Un valor de tipo `T` que representa el valor inicial de la propiedad reactiva. Por defecto es `Nothing`.
- `read_only`: Un valor booleano que indica si la propiedad reactiva es de solo lectura o no. Si es `True`, la propiedad no puede ser modificada después de la inicialización. Si es `False`, la propiedad puede ser modificada. Por defecto es `False`.
- `modifier`: Una función que toma cualquier entrada y devuelve un objeto `Modifier`. El objeto `Modifier` es responsable de modificar la entrada antes de almacenarla en la propiedad reactiva. La implementación por defecto de la función es la función de identidad (`lambda _: identity`), lo que significa que la entrada no se modifica.
- `validator`: Una función que toma dos argumentos, el valor actual de la propiedad reactiva y el nuevo valor que se está asignando. Devuelve el valor validado que se almacenará en la propiedad reactiva. La implementación por defecto de la función es `lambda _, v: v`, lo que significa que no se realiza ninguna validación.

Métodos:
- `__init__`: El constructor de la clase que inicializa el objeto `ReactiveProperty`. Toma cuatro parámetros:
  - `init_value` (opcional): El valor inicial de la propiedad reactiva. Por defecto es `Nothing`.
  - `read_only` (opcional): Un valor booleano que indica si la propiedad reactiva es de solo lectura o no. Por defecto es `False`.
  - `modifier` (opcional): Una función que modifica la entrada antes de almacenarla en la propiedad reactiva. Por defecto es la función de identidad (`lambda _: identity`).
  - `validator` (opcional): Una función que valida el nuevo valor que se está asignando a la propiedad reactiva. Por defecto es `lambda _, v: v`.

Tu tarea es
{"source": "argilla/DistiCoder-dpo-binarized", "kind": "synthetic", "evolved_from": null}