Release/v0.4.1 #1
1 changed files with 13 additions and 1 deletions
|
|
@ -5,7 +5,12 @@ from snakia.types import empty
|
||||||
|
|
||||||
class Property[T]:
|
class Property[T]:
|
||||||
"""
|
"""
|
||||||
A property that can be set, get, and deleted."""
|
A property that can be set, get, and deleted.
|
||||||
|
"""
|
||||||
|
|
||||||
|
__slots__ = "__fget", "__fset", "__fdel", "__name"
|
||||||
|
|
||||||
|
__name: str
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
|
|
@ -17,6 +22,9 @@ class Property[T]:
|
||||||
self.__fset = fset
|
self.__fset = fset
|
||||||
self.__fdel = fdel
|
self.__fdel = fdel
|
||||||
|
|
||||||
|
def __set_name__(self, owner: type, name: str) -> None:
|
||||||
|
self.__name = name
|
||||||
|
|
||||||
def __get__(self, instance: Any, owner: type | None = None, /) -> T:
|
def __get__(self, instance: Any, owner: type | None = None, /) -> T:
|
||||||
return self.__fget(instance)
|
return self.__fget(instance)
|
||||||
|
|
||||||
|
|
@ -40,3 +48,7 @@ class Property[T]:
|
||||||
"""Descriptor deleter."""
|
"""Descriptor deleter."""
|
||||||
self.__fdel = fdel
|
self.__fdel = fdel
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
@property
|
||||||
|
def name(self) -> str:
|
||||||
|
return self.__name
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue