Special handling of descriptor field like in dataclasses
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
Direzione di ricerca
Start by reading the descriptor-typed fields documentation linked in the issue, then review the earlier discussions in #881 and #1108. Done means attrs supports descriptor fields without losing descriptor behavior during initialization or assignment, matching the documented dataclasses example.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
dataclass dataclasses handle descriptor fields differently from other fields, so the descriptor type is not lost when assigning:
https://docs.python.org/3/library/dataclasses.html#descriptor-typed-fields
This does not work in attrs, it's a pity because it could be used as an alternative to converters called with the instance (#1108).
Previous discussion about this was not very conclusive (#881).
# Example from python docs
from dataclasses import dataclass
from attrs import define
class IntConversionDescriptor:
def __init__(self, *, default):
self._default = default
def __set_name__(self, owner, name):
self._name = "_" + name
def __get__(self, obj, type):
if obj is None:
return self._default
return getattr(obj, self._name, self._default)
def __set__(self, obj, value):
setattr(obj, self._name, int(value))
# dataclass: WORKS AS EXPECTED
@dataclass
class InventoryItem:
quantity_on_hand: IntConversionDescriptor = IntConversionDescriptor(default=100)
i = InventoryItem()
print(i.quantity_on_hand) # 100
i.quantity_on_hand = 2.5 # calls __set__ with 2.5
print(i.quantity_on_hand) # 2
# attrs: DOES NOT WORK
@define
class InventoryItem2:
quanttity_on_hand: IntConversionDescriptor = IntConversionDescriptor(default=100)
i2 = InventoryItem2()
print(i2.quantity_on_hand) # <__main__.IntConversionDescriptor object at 0x78c3a12a1250>
i2.quantity_on_hand = 2.5 # set InventoryItem2 attribute to a float, erasing the descriptor
print(i2.quantity_on_hand) # 2.5
- Lingua principale
- Python
- Stelle
- 5.9k
- Fork
- 499
- Merge medio
- 3g 12h
- PR unite (30g)
- 3
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di python-attrs/attrs
-
Docs: `attrs.filters` is missing stated examplesForse già presa @feiiiiii5 l’ha presa 10 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
python-attrs/attrs#1627 ·
I maintainer di solito rispondono entro 1 giorno
-
slots declared on attrs-decorated class are ignored/lostForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
python-attrs/attrs#1637 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
python-attrs/attrs#1620 ·
I maintainer di solito rispondono entro 1 giorno
-
Incorrect annotation for forward reference in generated constructorForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
python-attrs/attrs#1596 · 2 commenti · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Decorated functions do not work with inheritanceForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
python-attrs/attrs#1549 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di python-attrs/attrs
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
LearningCircuit/local-deep-research#7206 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
chingu-voyages/V62-tier3-team-33#285 ·
I maintainer di solito rispondono entro 1 giorno
-
Proxy drops log notifications from backends that don't send FastMCP's msg/extra dictForse già presa @asasemahmed l’ha presa oggi. Apertabug server
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: Bedrock request metadata forwarding does not work for /embeddingsForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertabug llm translation
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno