New submission from Tushar Sadhwani <[email protected]>:
Starting with Python3.9, `@classmethod` can be stacked on top of `@property`,
but it seems that `@staticmethod` cannot.
>>> class C:
... @classmethod
... @property
... def cm(cls):
... return cls.__name__
... @staticmethod
... @property
... def magic_number():
... return 42
...
>>> C.cm
'C'
>>> C.magic_number
<property object at 0x7f0ad3c1ea90>
>>>
This feels like inconsistent behaviour, plus, having staticmethod properties
can be useful for creating read-only class attributes, for eg:
class C:
@staticmethod
@property
def FINE_STRUCTURE_CONSTANT():
return 1 / 137
This would make it hard to accidentally modify the constant inside the class.
----------
messages: 400051
nosy: tusharsadhwani
priority: normal
severity: normal
status: open
title: @classmethod can be stacked on @property, but @staticmethod cannot
type: enhancement
versions: Python 3.10, Python 3.11, Python 3.9
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue44973>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com