Tired of typing @property
just to make a read-only instance variable? Find yourself wishing for C#'s {get; set;}
syntax? Look no further than PAAM, which auto-generates property getters, setter, and deleters for you!
Once installed, just use the overloaded |
operator between an instance variable and one of the predefined constants GET
, SET
, or DEL
. Make sure to subclass from PaamBase
.
from paam import SET, PaamBase
class Test(PaamBase):
def __init__(self, a: int):
self.a = a | GET # write to self.a (not self._a) because PAAM creates setters/getters/deleters *after* __init__ finishes
>>> obj = Test(15)
>>> obj.a
>>> 15
>>> obj.a = 5 # raises AttributeError: can't set attribute
Property access modifiers can also be chained (order doesn't matter):
from paam import SET, GET, DEL, PaamBase
class Test(PaamBase):
def __init__(self, a: int):
self.a = a | GET | SET
>>> obj = Test(15)
>>> obj.a
>>> 15
>>> obj.a = 5
>>> obj.a
>>> 5
>>> del obj.a # raises AttributeError: can't delete attribute
- The type of any variable "annotated" with
GET
,SET
, orDEL
is_PropertyAccessModifierBase
. This meansmypy
support and IDE type hinting are most likely broken. - No tests
- Error messages currently only show owner class