c = Concrete() c.process() Logging start Validating Base Logging end
print(MyClass.version) # 1.0
class SingletonMeta(type): _instances = {} def __call__(cls, *args, **kwargs): if cls not in cls._instances: cls._instances[cls] = super().__call__(*args, **kwargs) return cls._instances[cls] class Database(metaclass=SingletonMeta): pass python 3 deep dive part 4 oop high quality
def __set__(self, instance, value): if value <= 0: raise ValueError("Must be positive") instance.__dict__[self.name] = value class Order: quantity = PositiveNumber() price = PositiveNumber() c = Concrete() c