diff --git a/homeassistant/helpers/entity.py b/homeassistant/helpers/entity.py index 191882b7afa..f4cc933a6c6 100644 --- a/homeassistant/helpers/entity.py +++ b/homeassistant/helpers/entity.py @@ -11,6 +11,7 @@ from enum import Enum, IntFlag, auto import functools as ft import logging import math +from operator import attrgetter import sys from timeit import default_timer as timer from types import FunctionType @@ -340,16 +341,6 @@ class CachedProperties(type): return _deleter - def getter(name: str) -> Callable[[Any], Any]: - """Create a getter for an _attr_ property.""" - private_attr_name = f"__attr_{name}" - - def _getter(o: Any) -> Any: - """Get an _attr_ property from the backing __attr attribute.""" - return getattr(o, private_attr_name) - - return _getter - def setter(name: str) -> Callable[[Any, Any], None]: """Create a setter for an _attr_ property.""" private_attr_name = f"__attr_{name}" @@ -372,7 +363,9 @@ class CachedProperties(type): def make_property(name: str) -> property: """Help create a property object.""" - return property(fget=getter(name), fset=setter(name), fdel=deleter(name)) + return property( + fget=attrgetter(f"__attr_{name}"), fset=setter(name), fdel=deleter(name) + ) def wrap_attr(cls: CachedProperties, property_name: str) -> None: """Wrap a cached property's corresponding _attr in a property.