Python/Conceitos básicos/Classes
Criamos o objeto classe com “class nome:”, ela é composta de atributos que representam este objeto. Quando a classe é atribuída a outro objeto, este objeto é chamado de instância da classe. Os métodos, que também são definidos para programação orientada a objetos, são funções dentro de uma classe. Todos os métodos ou atributos da classe são obrigados a passar por parâmetro ou argumento a palavra self antes de tudo, isso é convencionado pelo próprio desenvolvedor, por padrão se chama self, o self foi convencionado nos parâmetros dos métodos e atributos devido a filosofia da linguagem de estar tudo explícito, especificar de onde o valor vem. Assim os métodos são chamados objeto.metodo (argumento1, argumento2, ...) são definidos iguais a uma função.
Os atributos da classe (ou variável da classe) podem ser instanciados em qualquer lugar da classe, e os atributos de instância (ou variável de instância) devem ser declarados dentro dos métodos utilizando o parâmetro self.
class Nó:
esquerda, direita, valor = None, None, 0
def __init__(self, valor):
# construtor dos valores
self.esquerda = None
self.direita = None
self.valor = valor
class Ordenação:
def __init__(self):
# inicializa a raiz da árvore
self.raiz = None
def AdicionaNo(self, valor):
return Nó(valor)
def Inserir(self, raiz, valor):
# inserir novo valor
if raiz == None:
# não há nenhum valor
return self.AdicionaNo(valor)
else:
# já está na árvore
if valor <= raiz.valor:
# se os dados forem menores do que os armazenados
# entra na sub-árvore do lado esquerdo
raiz.esquerda = self.Inserir (raiz.esquerda, valor)
else:
# entra na sub-árvore do lado direito
raiz.direita = self.Inserir (raiz.direita, valor)
return raiz
Brincando com instância de classe:
class A:
a = 1 # atributo publico
__b = 2 # atributo privado a class A
class B(A):
__c = 3 # atributo privado
def __init__(self):
print self.a
print self.__c
a = A()
print (isinstance(a, B)) # ''Objeto a'' é uma instância da ''classe B''? Falso.
a = B() # Instancía o ''objeto a'' na ''classe B'' e imprime os atributos da classe.
print (isinstance(a, B)) # ''Objeto a'' é uma instância da ''classe B''?Verdadeiro.
b = B() # Instancía o ''objeto b'' na ''classe B'' e imprime os atributos da classe.
print (isinstance(b, B)) # ''Objeto b'' é uma instância da ''classe B''? Verdadeiro.
b = A() # Instancía o ''objeto b'' na ''classe A''.
print (isinstance(b, A)) # ''Objeto b'' é uma instância da ''classe A''? Verdadeiro.