У меня есть базовый класс, который выглядит следующим образом:
class Base:
def __init__(self, prop):
self.prop = prop
Я хочу создать класс-оболочку ReadonlyWrapper
, доступный только для чтения, со следующими функциями:
# Create instance using __init__ of base class.
readonly_instance = ReadonlyWrapper()
# I can access properties
prop = readonly_instance.prop
# This should raise a PermissionError
readonly_instance.prop = 23
Точнее я хочу, чтобы все поля класса были доступны только для чтения, но только после вызова __init__
, иначе класс не может быть построен в самом конструкторе. Я знаю, что это можно сделать с помощью декоратора свойств, но я не хочу превращать все атрибуты в свойства.