bpo-33502: dataclass._Dataclassparams repr: use repr of each member. (GH-6812)
This commit is contained in:
parent
00717a46a1
commit
3059042410
|
@ -274,12 +274,12 @@ class _DataclassParams:
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return ('_DataclassParams('
|
return ('_DataclassParams('
|
||||||
f'init={self.init},'
|
f'init={self.init!r},'
|
||||||
f'repr={self.repr},'
|
f'repr={self.repr!r},'
|
||||||
f'eq={self.eq},'
|
f'eq={self.eq!r},'
|
||||||
f'order={self.order},'
|
f'order={self.order!r},'
|
||||||
f'unsafe_hash={self.unsafe_hash},'
|
f'unsafe_hash={self.unsafe_hash!r},'
|
||||||
f'frozen={self.frozen}'
|
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