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.
f4d8878d-e378-4087-a99b-c31dad5f0609
Σου έχει ανατεθεί η υλοποίηση μιας κλάσης που ονομάζεται `ReactiveProperty`, η οποία είναι μια generic κλάση που επεκτείνει την κλάση `ReactiveValue`. Η κλάση `ReactiveProperty` αντιπροσωπεύει μια ιδιότητα της οποίας η τιμή μπορεί να αλλάζει δυναμικά και να αντιδρά σε αλλαγές.

Η κλάση `ReactiveProperty` έχει τα ακόλουθα χαρακτηριστικά και μεθόδους:

Γνωρίσματα:
- `init_value` (προαιρετικό): Μια τιμή τύπου `T` που αντιπροσωπεύει την αρχική τιμή του `ReactiveProperty`. Προεπιλογή της είναι το `Nothing`.
- `read_only`: Μια boolean τιμή που υποδεικνύει εάν η `ReactiveProperty` είναι μόνο για ανάγνωση ή όχι. Εάν `True`, η `ReactiveProperty` δεν μπορεί να τροποποιηθεί μετά την αρχικοποίησή της. Εάν `False`, η `ReactiveProperty` μπορεί να τροποποιηθεί. Οι προεπιλογή της είναι το `False`.
- `modifier`: Μια συνάρτηση που λαμβάνει οποιαδήποτε είσοδο και επιστρέφει ένα αντικείμενο `modifier`. Το αντικείμενο `modifier` είναι υπεύθυνο για την τροποποίηση της εισόδου πριν την αποθήκευσή της στην `ReactiveProperty`. Η προεπιλεγμένη υλοποίηση της συνάρτησης είναι η συνάρτηση ταυτότητας (`lambda _: identity`), που σημαίνει ότι η είσοδος δεν τροποποιείται.
- `validator`: Μια συνάρτηση που λαμβάνει δύο ορίσματα, την τρέχουσα τιμή της `ReactiveProperty` και τη νέα τιμή που εκχωρείται. Επιστρέφει την ελεγμένη τιμή που θα αποθηκευτεί στην `ReactiveProperty`. Η προεπιλεγμένη υλοποίηση της συνάρτησης είναι `lambda _, v: v`, που σημαίνει ότι δεν πραγματοποιείται έλεγχος.

Μέθοδοι:
- `__init__`: Ο constructor της κλάσης που αρχικοποιεί το αντικείμενο `ReactiveProperty`. Χρειάζεται τέσσερις παραμέτρους:
 - `init_value` (προαιρετικό): Η αρχική τιμή της `ReactiveProperty`. Προεπιλογή είναι το `Nothing`.
 - `read_only` (προαιρετικό): Μια boolean τιμή που υποδεικνύει εάν η `ReactiveProperty` είναι μόνο για ανάγνωση ή όχι. Οι προεπιλογή είναι το `False`.
 - `modifier` (προαιρετικό): Μια συνάρτηση που τροποποιεί την είσοδο πριν την αποθηκεύσει στην `ReactiveProperty`. Προεπιλογή είναι η συνάρτηση ταυτότητας (`lambda _: identity`).
 - `validator` (προαιρετικό): Μια συνάρτηση που επικυρώνει τη νέα τιμή που εκχωρείται στην `ReactiveProperty`. Προεπιλογή είναι το `lambda: _, v: v`.

Ο στόχος σου είναι να εφαρμόσεις την κλάση `ReactiveProperty` σύμφωνα με τις δοσμένες απαιτήσεις.
submitted
{"source": "argilla/DistiCoder-dpo-binarized", "kind": "synthetic", "evolved_from": null}