aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRapptz <[email protected]>2021-05-02 08:05:52 -0400
committerRapptz <[email protected]>2021-05-02 08:05:52 -0400
commitcd7357b93ad8234e7e9a97dbb666928f426a7587 (patch)
treea755706079a38f7d65eea7624047e502bb673c5b
parentAdd Client.create_dm (diff)
downloaddiscord.py-cd7357b93ad8234e7e9a97dbb666928f426a7587.tar.xz
discord.py-cd7357b93ad8234e7e9a97dbb666928f426a7587.zip
Add classproperty helper utility
This is apparently a 3.9+ only addition
-rw-r--r--discord/utils.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/discord/utils.py b/discord/utils.py
index bd29caab..07229312 100644
--- a/discord/utils.py
+++ b/discord/utils.py
@@ -155,6 +155,15 @@ class CachedSlotProperty(Generic[T, T_co]):
setattr(instance, self.name, value)
return value
+class classproperty(Generic[T_co]):
+ def __init__(self, fget: Callable[[Any], T_co]) -> None:
+ self.fget = fget
+
+ def __get__(self, instance: Optional[Any], owner: Type[Any]) -> T_co:
+ return self.fget(owner)
+
+ def __set__(self, instance, value) -> None:
+ raise AttributeError('cannot set attribute')
def cached_slot_property(name: str) -> Callable[[Callable[[T], T_co]], CachedSlotProperty[T, T_co]]:
def decorator(func: Callable[[T], T_co]) -> CachedSlotProperty[T, T_co]: