bpo-33502: dataclass._Dataclassparams repr: use repr of each member. (GH-6812)
(cherry picked from commit 3059042410
)
Co-authored-by: Eric V. Smith <ericvsmith@users.noreply.github.com>
This commit is contained in:
parent
3b26e8cab7
commit
b57aeac82c
|
@ -274,12 +274,12 @@ class _DataclassParams:
|
|||
|
||||
def __repr__(self):
|
||||
return ('_DataclassParams('
|
||||
f'init={self.init},'
|
||||
f'repr={self.repr},'
|
||||
f'eq={self.eq},'
|
||||
f'order={self.order},'
|
||||
f'unsafe_hash={self.unsafe_hash},'
|
||||
f'frozen={self.frozen}'
|
||||
f'init={self.init!r},'
|
||||
f'repr={self.repr!r},'
|
||||
f'eq={self.eq!r},'
|
||||
f'order={self.order!r},'
|
||||
f'unsafe_hash={self.unsafe_hash!r},'
|
||||
f'frozen={self.frozen!r}'
|
||||
')')
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
from __future__ import annotations
|
||||
from dataclasses import dataclass
|
||||
from typing import List
|
||||
from typing import ClassVar as CV
|
||||
|
||||
@dataclass
|
||||
class A:
|
||||
a: List[str]
|
||||
|
||||
@dataclass
|
||||
class B(A):
|
||||
b: CV[int]
|
|
@ -0,0 +1,15 @@
|
|||
|
||||
class X:
|
||||
def __init__(self, value):
|
||||
self.value = value
|
||||
def __str__(self):
|
||||
return str(self.value)
|
||||
def __format__(self, fmt):
|
||||
assert fmt[0] == '='
|
||||
self.value = eval(fmt[1:])
|
||||
return ''
|
||||
|
||||
x = X(3)
|
||||
print(x)
|
||||
f'{x:=4}' # Behold!
|
||||
print(x)
|
|
@ -0,0 +1,20 @@
|
|||
from dataclasses import *
|
||||
|
||||
class D:
|
||||
"""A descriptor class that knows its name."""
|
||||
def __set_name__(self, owner, name):
|
||||
self.name = name
|
||||
def __get__(self, instance, owner):
|
||||
if instance is not None:
|
||||
return 1
|
||||
return self
|
||||
|
||||
from dataclasses import *
|
||||
|
||||
@dataclass
|
||||
class C:
|
||||
d: int = field(default=D(), init=False)
|
||||
|
||||
@dataclass
|
||||
class E(C):
|
||||
e: int = field(default=D(), init=False)
|
|
@ -0,0 +1,31 @@
|
|||
#from __future__ import annotations
|
||||
from typing import ClassVar, Dict, get_type_hints
|
||||
from dataclasses import *
|
||||
|
||||
class Starship:
|
||||
stats: ClassVar[Dict[str, int]] = {}
|
||||
|
||||
#print(get_type_hints(Starship))
|
||||
|
||||
#class A:
|
||||
# a: Dict[int, C]
|
||||
|
||||
#print(get_type_hints(A))
|
||||
|
||||
cv = [ClassVar[int]]
|
||||
|
||||
@dataclass
|
||||
class C:
|
||||
CVS = [ClassVar[str]]
|
||||
a: cv[0]
|
||||
b: 'C'
|
||||
c: 'CVS[0]'
|
||||
x: 'ClassVar["int"]'
|
||||
y: 'ClassVar[C]'
|
||||
|
||||
print()
|
||||
print(C.__annotations__)
|
||||
print(C.__dataclass_fields__)
|
||||
|
||||
|
||||
#print(get_type_hints(C))
|
Loading…
Reference in New Issue