Teste de software|Ensine como usar dataclass

Insira a descrição da imagem aqui

Prefácio

dataclassÉ uma ferramenta muito útil quando precisamos definir uma classe simples de contêiner de dados em Python . __init__()Ele nos permite criar classes facilmente com alguns recursos de automação, como geração automática __repr__()e __eq__()métodos. Este artigo apresentará o uso da classe de dados em detalhes e fornecerá exemplos para ilustrar como usá-la.

o que édataclass?

dataclassÉ um decorador na biblioteca padrão do Python, que pode ser usado para decorar uma classe e transformá-la em uma classe para armazenar dados sem escrever construtores, métodos e métodos de comparação complicados __repr__().

Observação: o Dataclass pode ser usado diretamente após o Python 3.7. As versões anteriores precisam instalar dataclasseso módulo primeiro. O comando de instalação é o seguinte:

pip install dataclasses==0.8

Mas se já o instalamos pydantic, não precisamos instalá- dataclasseslo novamente.

Como usardataclass?

Para usá-lo dataclass, primeiro você precisa importá-lo:

from dataclasses import dataclass

Em seguida, @dataclassmarcamos uma classe com um decorador para torná-la uma classe de dados. As propriedades das classes de dados são geralmente definidas como variáveis ​​da classe e seus tipos podem ser anotados nas variáveis.

Vamos ilustrar como usá-lo com um exemplo dataclass.

Exemplo: Definir uma classe Person

Suponha que queiramos definir uma classe que represente informações pessoais, incluindo nome e idade. Usando dataclass, podemos definir esta classe da seguinte forma:

from dataclasses import dataclass

@dataclass
class Person:
    name: str
    age: int

Neste exemplo, definimos uma Personclasse de dados nomeada, que possui duas propriedades: namee age, representando nome e idade respectivamente. Observe que não escrevemos construtores __repr__() ou __eq__()métodos.

Agora, vamos ver como Personcriar objetos usando esta classe:

# 创建一个Person对象
person1 = Person("Alice", 30)

# 创建另一个Person对象
person2 = Person("Bob", 25)

# 打印对象
print(person1)  # 输出: Person(name='Alice', age=30)
print(person2)  # 输出: Person(name='Bob', age=25)

# 检查两个对象是否相等
print(person1 == person2)  # 输出: False

Conforme mostrado acima, podemos criar objetos com muita facilidade Person, imprimi-los produz uma saída significativa e podemos usar ==operadores para compará-los. Este é dataclassum recurso fornecido automaticamente.

dataclassO comportamento padrão de

dataclassSão fornecidos alguns comportamentos padrão, que podem ser personalizados conforme necessário. Aqui estão alguns comportamentos padrão:

  1. __init__()Método: dataclassgera automaticamente um método de inicialização que aceita e inicializa todas as propriedades da classe.
  2. __repr__()Método: dataclassGere automaticamente uma representação de string legível para imprimir objetos.
  3. __eq__()Método: dataclassgera automaticamente um método de igualdade para comparar se as propriedades de dois objetos são iguais.
  4. __hash__()Método: Se todos os campos da classe forem imutáveis ​​(como str, int, etc.), dataclassum método hash é gerado automaticamente para que o objeto possa ser usado como chave de dicionário.

dataclasscomportamento personalizado

Embora dataclassmuitos comportamentos padrão sejam fornecidos, você pode personalizá-los conforme necessário. Por exemplo, podemos usar @dataclassos parâmetros do decorador para especificar diferentes comportamentos. Aqui estão algumas opções de personalização comuns:

  • init: Se definido como False, os métodos não serão gerados __init__(), o que é útil ao criar objetos imutáveis.
  • repr: se definido como False, o método não será gerado __repr__(), o que é útil quando uma representação de string legível por humanos não é necessária.
  • eq: Se definido como False, o método não será gerado __eq__(), o que é útil quando não há necessidade de comparar objetos quanto à igualdade.
  • frozen: se definido como True, uma classe imutável será gerada e todos os campos se tornarão propriedades somente leitura.

Aqui está um exemplo que demonstra como personalizar dataclasso comportamento:

from dataclasses import dataclass

@dataclass(init=False, repr=False, eq=False)
class CustomPerson:
    name: str
    age: int

# 创建一个CustomPerson对象
custom_person = CustomPerson("Charlie", 35)

# 由于我们禁用了__init__,无法初始化对象
# 打印会引发错误
print(custom_person)  # 引发错误

No exemplo acima, desabilitamos os __init__()métodos __repr__()e __eq__(), resultando em nenhuma criação ou comparação de objetos.

Resumir

dataclassé uma ferramenta poderosa para criar classes para armazenar dados. Elimina a necessidade de escrever muito código repetitivo, tornando o código mais limpo e legível. Com o uso criterioso dataclassdas opções de personalização, podemos adaptar o comportamento da classe de acordo com nossas necessidades. dataclassEspero que este artigo seja útil para que todos possam entender e usar o .

Acho que você gosta

Origin blog.csdn.net/Tester_muller/article/details/133078963
Recomendado
Clasificación