Teste de dicionário (WxGrid)
Código
1 import random
2
3 def gera_str():
4 tamanho = random.randint(3, 8)
5 texto = ''
6 for i in range(tamanho):
7 texto += chr(random.randint(97, 122))
8 return texto
9
10 def gera_str2():
11 p1 = random.randint(1000, 9999)
12 p2 = random.randint(1000, 9999)
13 s = "%s-%s" % (p1, p2)
14 return s
15
16 def gera_str3():
17 p1 = random.randint(100, 999)
18 p2 = random.randint(100, 999)
19 p3 = random.randint(100, 999)
20 p4 = random.randint(10, 99)
21 s = "%s.%s.%s-%s" % (p1, p2, p3, p4)
22 return s
23
24 class T:
25 def __init__(self, **d):
26 self.__dict__ = d
27
28 print "Dois objetos com os mesmos atributos (criados na mesma ordem)"
29 t1 = T(nome='Teste', telefone='1234-5678')
30 t2 = T(nome='Teste2', telefone='5678-1234')
31 print t1.__dict__
32 print t2.__dict__
33 print
34
35 print "Dois objetos com os mesmos atributos (criados em ordem diferente)"
36 t1 = T(cpf='012.345.678-90', nome='Teste', telefone='1234-5678')
37 t2 = T(nome='Teste2', telefone='5678-1234', cpf='111.222.333-44')
38 print t1.__dict__
39 print t2.__dict__
40 print
41
42 print "Lista com 100 objetos: ora o nome está na frente, ora o cpf é que está (na construção do objeto)"
43 lista = []
44 for i in range(50):
45 lista.append(T(nome=gera_str(), telefone=gera_str2(), cpf=gera_str3()))
46 lista.append(T(cpf=gera_str3(), telefone=gera_str2(), nome=gera_str()))
47 for i in lista:
48 print i.__dict__
49 print
50
51 print "Lista com 50 objetos: atributos criados na mesma ordem, porém existe um atributo dinâmico"
52 lista = []
53 for i in range(50):
54 codigo = 'lista.append(T(nome=gera_str(), telefone=gera_str2(), cpf=gera_str3(), %s=%i))' % (gera_str(), random.randint(0, 10))
55 exec codigo
56 for i in lista:
57 print i.__dict__
58 print
Volta para WxGrid.