improvement suggestion for the Coordinate exemple in 3/howto/enum.html
Ouverte
@ethanfurman y travaille déjà.
Depuis le 11/5/2024.
docs
- Langage dominant
- Python
- Étoiles
- 77.2k
- Forks
- 36k
- Métriques de merge des PR
- Métriques de PR en attente
Description
Documentation
The chapter "When to use __new__() vs. __init__()" starts with a sample class Coordinate(bytes, Enum) and later use 'int' instead of bytes. I would suggest the code here under to improve consistency with bytes inheritance. This suggestion emerged after using the original example raising an exception
>>> Coordinate['PY']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/enum.py", line 1217, in __repr__
return "<%s.%s: %s>" % (self.__class__.__name__, self._name_, v_repr(self._value_))
^^^^^^^^^^^^^^^^^^^^
TypeError: descriptor '__repr__' requires a 'bytes' object but received a 'int'
class Coordinate(bytes, Enum):
"""
Coordinate with binary codes that can be indexed by the int code.
"""
def __new__(cls, value, label, unit):
obj = bytes.__new__(cls, value)
obj._value_ = int.from_bytes(value, byteorder='big')
obj.label = label
obj.unit = unit
return obj
PX = (b'0', 'P.X', 'km')
PY = (b'1', 'P.Y', 'km')
VX = (b'2', 'V.X', 'km/s')
VY = (b'3', 'V.Y', 'km/s')
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Évaluation
Cette issue n'a pas encore été évaluée.