bpo-33502: dataclass._Dataclassparams repr: use repr of each member. (GH-6812)

This commit is contained in:
Eric V. Smith 2018-05-14 17:16:52 -04:00 committed by GitHub
parent 00717a46a1
commit 3059042410
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 84 additions and 6 deletions

View File

@ -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}'
')') ')')

12
f.py Normal file
View File

@ -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]

15
j.py Normal file
View File

@ -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)

20
t.py Normal file
View File

@ -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)

31
x.py Normal file
View File

@ -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))