forked from pythonprobr/pythonbirds
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpessoa.py
More file actions
57 lines (46 loc) · 1.56 KB
/
Copy pathpessoa.py
File metadata and controls
57 lines (46 loc) · 1.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# criação da classe pessoa
class Pessoa:
olhos = 2 #atributo defautl ou atributo de classe
def __init__(self, *filhos, nome = None, idade=35):
self.idade = idade
self.nome = nome
self.filhos = list(filhos)
#criação do método
def cumprimentar(self):
return f'Olá {id(self)}'
@staticmethod #decorator
def metodo_estatico():
return 42
@classmethod
def nome_e_atributos_de_classe(cls): #cls alusão palavra class (Pessoa)
return f'{cls} - olhos {cls.olhos}'
class Homem(Pessoa): #classe Homem herda todos os atributos e métodos da classe pai Pessoa
pass
if __name__ =='__main__':
renzo = Homem(nome='Renzo')
luciano = Homem(renzo, nome='Luciano')
print(Pessoa.cumprimentar(luciano))
print(id(luciano))
print(luciano.cumprimentar())
print(luciano.nome)
print(luciano.idade)
for filho in luciano.filhos:
print(filho.nome)
luciano.sobrenome = 'Ramalho'
del luciano.filhos
luciano.olhos = 1
del luciano.olhos
print(luciano.__dict__)
print(renzo.__dict__)
Pessoa.olhos = 3
print(Pessoa.olhos)
print(luciano.olhos)
print(renzo.olhos)
print(id(Pessoa.olhos), id(luciano.olhos), id(renzo.olhos))
print(Pessoa.metodo_estatico(), luciano.metodo_estatico())
print(Pessoa.nome_e_atributos_de_classe(), luciano.nome_e_atributos_de_classe())
pessoa = Pessoa('Anonimo')
print(isinstance(pessoa, Pessoa))
print(isinstance(pessoa, Homem))
print(isinstance(renzo, Pessoa))
print(isinstance(renzo, Homem))