Orientado a objetos: uso simples de classes Python

01. dirFunções integradas

  • PythonNo assunto é quase onipresente , antes de aprender as variáveis , dados , funções são objetos

Na Pythonpode ser verificada utilizando os dois métodos seguintes:

  1. O identificador / entrada de dados após .pressionar o TABbotão, iPythonvocê será solicitado a chamar o objeto pode ser uma lista de métodos
  2. Funções integradas usando diro identificador / dados de entrada , o objeto pode ser visto em todas as propriedades e métodos

O __方法名__ formato da dica é Pythonfornecer um método / propriedade embutido , lhe dará alguns métodos / propriedades embutidos comuns posteriormente

Número de série Nome do método Tipos de efeito
01 __new__ método Crie um objeto , a vontade é automaticamente invocada
02 __init__ método O objeto é inicializado quando, será invocado automaticamente
03 __del__ método O objeto foi destruído da memória antes, será invocado automaticamente
04 __str__ método Retorna as informações de descrição do objeto , a printsaída da função usa

As dicas fazem bom uso da dir()função, no estudo não é preciso memorizar muito conteúdo

02. Defina uma classe simples

Orientado a objetos é mais do pacote , o pacote de vários métodos em uma classe , que é criado por meio do objeto de classe, você pode chamar esses métodos diretamente !

2.1 Defina uma classe que contém apenas métodos

  • No Pythonmétodo para definir uma classe que contém apenas a seguinte sintaxe:
class 类名:

    def 方法1(self, 参数列表):
        pass
    
    def 方法2(self, 参数列表):
        pass
  • O formato de definição do método é quase o mesmo que a função aprendida antes
  • A diferença é que o primeiro parâmetro deve ser self, por favor, lembre-se por enquanto e apresente-o mais tardeself

Nota: O nome das convenções de nomenclatura de classe para atender à nomenclatura de grande corcunda

2.2 Criar objetos

  • Quando uma classe é definida, use esta classe para criar um objeto, o formato da sintaxe é o seguinte:
对象变量 = 类名()

2.3 Caso

exigem

  • Gatinhos amo comer peixe, o gatinho a beber água

análise

  1. Defina um gato Cat
  2. Define dois métodos, eatedrink
  3. Sob demanda - sem necessidade de definir atributos
class Cat:
    """这是一个猫类"""

    def eat(self):
        print("小猫爱吃鱼")

    def drink(self):
        print("小猫在喝水")

tom = Cat()
tom.drink()
tom.eat()

Ênfase em conceitos referenciados

No desenvolvimento orientado a objetos, o conceito de referência é igualmente aplicável!

  • No Pythonuso da classe após a criação de objetos , as tomvariáveis ​​ainda são gravadas endereço do objeto na memória
  • Ou seja, a tomvariável faz referência a novos objetos de gato
  • Use printa saída variável de objeto , por padrão, é capaz de emitir a variável referências de objeto são feitas que criou um objeto de classe , bem como um endereço na memória ( hexadecimal )

Dica: No computador, geralmente o endereço de memória de representação hexadecimal

  • %dPode produzir números em decimais
  • %xPode produzir números em hexadecimal

03. O método do selfparâmetro

3.1 Adicionar atributos aos objetos

  • No Pythonmeio, você deseja definir as propriedades para objetos , muito fácil, mas não recomendado
    • Porque: o encapsulamento das propriedades do objeto deve ser encapsulado dentro da classe
  • Só precisa de classe de código externo diretamente na .definição de uma propriedade para

Observação: embora esse método seja simples, ele não é recomendado!

tom.name = "Tom"
...

lazy_cat.name = "大懒猫"

3.2 selfNos métodos internos, a saída do nome de cada gato

De qual chamada de método de objeto , no método selfé uma referência a um objeto que

  • Dentro de um pacote de classe de método, selfdiz que o método atual de chamar o próprio objeto
  • Quando você chama um método , os programadores não precisam passar selfparâmetros
  • Dentro do método
    • Você pode self. acessar as propriedades do objeto
    • Você também pode self. chamar outros métodos de objeto
  • O código de transformação é o seguinte:
class Cat:

    def eat(self):
        print("%s 爱吃鱼" % self.name)

tom = Cat()
tom.name = "Tom"
tom.eat()

lazy_cat = Cat()
lazy_cat.name = "大懒猫"
lazy_cat.eat()
  • Na aula externa , por meio das propriedades e métodos do变量名. objeto de acesso
  • No tipo de método de embalagem , self.acessando as propriedades e métodos do objeto

04. Método de inicialização

4.1 Adicionar atributos a objetos fora da classe

  • Ajuste o código do caso, chame o método primeiro, depois defina as propriedades e observe o efeito de execução
tom = Cat()
tom.drink()
tom.eat()
tom.name = "Tom"
print(tom)
  • O erro de execução do programa é o seguinte:
AttributeError: 'Cat' object has no attribute 'name'
属性错误:'Cat' 对象没有 'name' 属性

incitar

  • No desenvolvimento diário, não é recomendado fora da classe para a propriedade de aumento de objeto
    • Se o atributo não for encontrado em tempo de execução, o programa irá relatar um erro
  • Deve conter objetos cujos atributos devem ser encapsulados no interior da classe

4.2 Método de inicialização

  • Quando 类名()o objeto for criado, ele fará automaticamente o seguinte:
    1. Na memória para o espaço alocado do objeto - criando um objeto
    2. Propriedade dos valores iniciais do conjunto de objetos - método de inicialização ( init)
  • O método de inicialização é o __init__método, __init__o objeto do método integrado

__init__O método é usado especificamente para definir um método de classe que as propriedades possuem !

O método de Cataumento __init__, verifique se o método é chamado automaticamente quando você cria um objeto

class Cat:
    """这是一个猫类"""

    def __init__(self):
        print("初始化方法")

4.3 Definir propriedades dentro do método de inicialização

  • No __init__interior do uso self.属性名 = 属性的初始值podem ser definidas propriedades
  • Depois de definir o atributo e usar a Catclasse para criar objetos, você será o proprietário da propriedade
class Cat:

    def __init__(self):

        print("这是一个初始化方法")
        
        # 定义用 Cat 类创建的猫对象都有一个 name 的属性
        self.name = "Tom"

    def eat(self):
        print("%s 爱吃鱼" % self.name)

# 使用类名()创建对象的时候,会自动调用初始化方法 __init__
tom = Cat()

tom.eat()

4.4 Defina o valor inicial durante a inicialização

  • No desenvolvimento, se você deseja criar simultaneamente um objeto, defina as propriedades de um objeto , pode __init__ser uma transformação de método
    1. O valor desejado do conjunto de propriedades, definido como os __init__parâmetros do método
    2. No método usando os self.属性 = 形参parâmetros internos recebeu transmissão externa
    3. Ao criar um objeto, use 类名(属性1, 属性2...)call
class Cat:

    def __init__(self, name):
        print("初始化方法 %s" % name)
        self.name = name
    ...
    
tom = Cat("Tom")
...

lazy_cat = Cat("大懒猫")
...

05. Métodos e propriedades integradas

Número de série Nome do método Tipos de efeito
01 __del__ método O objeto foi destruído da memória antes, será invocado automaticamente
02 __str__ método Retorna as informações de descrição do objeto , a printsaída da função usa

5.1 __del__Método

  • Pythonno

    • Quando você usa 类名()quando você cria um objeto, o objeto é a alocação completa de espaço , o método de chamada automática__init__
    • Quando um objeto é destruído da memória antes, ele chamará automaticamente o __del__método
  • Cenários de aplicação

    • __init__ Transforme o método de inicialização para tornar a criação de objetos mais flexível
    • __del__Se você quiser antes que o objeto seja destruído, faça algumas coisas que você pode considerar __del__métodos
  • ciclo da vida

    • Um objeto de uma chamada para 类名()criar o ciclo de vida começa
    • Um objeto, __del__uma vez que o método é chamado, o fim do ciclo de vida
    • Durante o ciclo de vida do objeto, você pode acessar as propriedades do objeto ou permitir que os métodos de chamada do objeto
class Cat:

    def __init__(self, new_name):

        self.name = new_name

        print("%s 来了" % self.name)

    def __del__(self):

        print("%s 去了" % self.name)

# tom 是一个全局变量
tom = Cat("Tom")
print(tom.name)

# del 关键字可以删除一个对象
del tom

print("-" * 50)

5.2 __str__Método

  • Em Pythonusando printa saída variável de objeto , por padrão, esta variável será de saída referências de objeto são feitas que criou um objeto de classe , bem como um endereço na memória ( hexadecimal )
  • Se em desenvolvimento, deseja usar as variáveis ​​do objeto deprint saída , é possível imprimir o conteúdo personalizado , você pode usar o método embutido de__str__

Nota: o __str__método deve retornar uma string

class Cat:

    def __init__(self, new_name):

        self.name = new_name

        print("%s 来了" % self.name)

    def __del__(self):

        print("%s 去了" % self.name)

    def __str__(self):
        return "我是小猫:%s" % self.name

tom = Cat("Tom")
print(tom)

Acho que você gosta

Origin blog.csdn.net/david2000999/article/details/112918049
Recomendado
Clasificación