


Explication détaillée du décorateur dataclass, une nouvelle fonctionnalité de Python 3.7
Cet article vous présente principalement les informations pertinentes sur la nouvelle fonction de Python 3.7, le décorateur de classe de données. L'article la présente en détail à travers un exemple de code. Il a une certaine valeur d'apprentissage de référence pour les études ou le travail de tous les amis qui en ont besoin. il Apprenons ensemble.
Préface
Python 3.7 sortira cet été, et il y aura beaucoup de nouveautés dans Python 3.7 :
Diverses améliorations du jeu de caractères
Évaluation différée des annotations
et prise en charge des classes de données
L'une des nouvelles fonctionnalités les plus intéressantes est le décorateur dataclass.
Qu'est-ce que la classe de données
La plupart des développeurs Python ont écrit de nombreuses classes comme celles-ci :
class MyClass: def __init__(self, var_a, var_b): self.var_a = var_a self.var_b = var_b
dataclass peut générer automatiquement des méthodes pour des cas simples, par exemple, un __init__ accepte ces paramètres et se les attribue, le petit exemple précédent peut être réécrit comme :
@dataclass class MyClass: var_a: str var_b: str
Voyons comment l'utiliser à travers un exemple
API Star Wars
Vous pouvez utiliser des requêtes pour obtenir des ressources de l'API Star Wars :
response = requests.get('https://swapi.co/api/films/1/') dictionary = response.json()
Jetons un coup d'œil au dictionnaire (simplifié) Le résultat de :
{ 'characters': ['https://swapi.co/api/people/1/',… ], 'created': '2014-12-10T14:23:31.880000Z', 'director': 'George Lucas', 'edited': '2015-04-11T09:46:52.774897Z', 'episode_id': 4, 'opening_crawl': 'It is a period of civil war.\r\n … ', 'planets': ['https://swapi.co/api/planets/2/', … ], 'producer': 'Gary Kurtz, Rick McCallum', 'release_date': '1977-05-25', 'species': ['https://swapi.co/api/species/5/',…], 'starships': ['https://swapi.co/api/starships/2/',…], 'title': 'A New Hope', 'url': 'https://swapi.co/api/films/1/', 'vehicles': ['https://swapi.co/api/vehicles/4/',…]
Encapsulation d'API
Afin d'encapsuler correctement un API , nous devrions créer un objet que les utilisateurs peuvent utiliser dans leurs applications, donc dans Python 3.6 définir un objet pour contenir les réponses aux requêtes à /films/endpoint :
class StarWarsMovie: def __init__(self, title: str, episode_id: int, opening_crawl: str, director: str, producer: str, release_date: datetime, characters: List[str], planets: List[str], starships: List[str], vehicles: List[str], species: List[str], created: datetime, edited: datetime, url: str ): self.title = title self.episode_id = episode_id self.opening_crawl= opening_crawl self.director = director self.producer = producer self.release_date = release_date self.characters = characters self.planets = planets self.starships = starships self.vehicles = vehicles self.species = species self.created = created self.edited = edited self.url = url if type(self.release_date) is str: self.release_date = dateutil.parser.parse(self.release_date) if type(self.created) is str: self.created = dateutil.parser.parse(self.created) if type(self.edited) is str: self.edited = dateutil.parser.parse(self.edited)
Les lecteurs attentifs auront peut-être remarqué du code répété ici.
C'est un cas classique d'utilisation du décorateur dataclass, nous devons créer une classe qui est principalement utilisée pour contenir des données, avec juste un peu de validation, voyons donc ce que nous devons modifier.
Tout d'abord, la classe de données génère automatiquement certaines méthodes dunder. Si nous ne spécifions aucune option pour le décorateur de classe de données, les méthodes générées sont : __init__, __eq__ et __repr__, si vous avez défini __repr__ Mais __str__ ne l'est pas. défini, et par défaut Python (pas seulement les classes de données) implémentera la méthode de sortie __str__ qui renvoie __repr__. Par conséquent, les quatre méthodes dunder peuvent être implémentées en modifiant simplement le code comme suit :
@dataclass class StarWarsMovie: title: str episode_id: int opening_crawl: str director: str producer: str release_date: datetime characters: List[str] planets: List[str] starships: List[str] vehicles: List[str] species: List[str] created: datetime edited: datetime url: str
Nous avons supprimé la méthode __init__ pour garantir que les données A le décorateur de classe peut ajouter les méthodes correspondantes qu'il génère. Cependant, nous avons perdu certaines fonctionnalités au cours du processus, notre constructeur Python 3.6 définit non seulement toutes les valeurs, mais tente également d'analyser la date, comment pouvons-nous faire cela avec une classe de données ?
Si nous voulons remplacer __init__, nous perdrons l'avantage de la classe de données, donc si nous voulons gérer des fonctionnalités supplémentaires, nous pouvons utiliser la nouvelle méthode dunder : __post_init__, voyons la méthode __post_init__ pour notre classe wrapper. est-ce que ça ressemble à :
def __post_init__(self): if type(self.release_date) is str: self.release_date = dateutil.parser.parse(self.release_date) if type(self.created) is str: self.created = dateutil.parser.parse(self.created) if type(self.edited) is str: self.edited = dateutil.parser.parse(self.edited)
C'est ça ! Nous pouvons utiliser le décorateur de classe de données pour implémenter notre classe dans les deux tiers du code.
Plus de goodies
La classe de données peut être davantage personnalisée pour le cas d'utilisation en utilisant les options du décorateur, les options par défaut sont :
@dataclass(init=True, repr=True, eq=True, order=False, unsafe_hash=False, frozen=False)
init détermine s'il faut générer __init__ méthode dunder
repr détermine s'il faut générer La méthode __repr__ dunder
eq fait de même pour la méthode __eq__ dunder, qui détermine le comportement de la vérification d'égalité (your_class_instance == another_instance)
order actual Il existe quatre méthodes dunder créées sur , qui déterminent le comportement de toutes les vérifications inférieures à, et/ou supérieures à, et si elles sont définies sur true, la liste des objets peut être triée.
Les deux dernières options déterminent si l'objet peut être haché, ce qui est nécessaire si vous souhaitez utiliser des objets de votre classe comme clés de dictionnaire.
Pour plus d'informations, veuillez vous référer à : PEP 557 -- Classes de données
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Les problèmes de «chargement» PS sont causés par des problèmes d'accès aux ressources ou de traitement: la vitesse de lecture du disque dur est lente ou mauvaise: utilisez Crystaldiskinfo pour vérifier la santé du disque dur et remplacer le disque dur problématique. Mémoire insuffisante: améliorez la mémoire pour répondre aux besoins de PS pour les images à haute résolution et le traitement complexe de couche. Les pilotes de la carte graphique sont obsolètes ou corrompues: mettez à jour les pilotes pour optimiser la communication entre le PS et la carte graphique. Les chemins de fichier sont trop longs ou les noms de fichiers ont des caractères spéciaux: utilisez des chemins courts et évitez les caractères spéciaux. Problème du PS: réinstaller ou réparer le programme d'installation PS.

Un PS est coincé sur le "chargement" lors du démarrage peut être causé par diverses raisons: désactiver les plugins corrompus ou conflictuels. Supprimer ou renommer un fichier de configuration corrompu. Fermez des programmes inutiles ou améliorez la mémoire pour éviter une mémoire insuffisante. Passez à un entraînement à semi-conducteurs pour accélérer la lecture du disque dur. Réinstaller PS pour réparer les fichiers système corrompus ou les problèmes de package d'installation. Afficher les informations d'erreur pendant le processus de démarrage de l'analyse du journal d'erreur.

L'article présente le fonctionnement de la base de données MySQL. Tout d'abord, vous devez installer un client MySQL, tel que MySQLWorkBench ou le client de ligne de commande. 1. Utilisez la commande MySQL-UROot-P pour vous connecter au serveur et connecter avec le mot de passe du compte racine; 2. Utilisez Createdatabase pour créer une base de données et utilisez Sélectionner une base de données; 3. Utilisez CreateTable pour créer une table, définissez des champs et des types de données; 4. Utilisez InsertInto pour insérer des données, remettre en question les données, mettre à jour les données par mise à jour et supprimer les données par Supprimer. Ce n'est qu'en maîtrisant ces étapes, en apprenant à faire face à des problèmes courants et à l'optimisation des performances de la base de données que vous pouvez utiliser efficacement MySQL.

La clé du contrôle des plumes est de comprendre sa nature progressive. Le PS lui-même ne fournit pas la possibilité de contrôler directement la courbe de gradient, mais vous pouvez ajuster de manière flexible le rayon et la douceur du gradient par plusieurs plumes, des masques correspondants et des sélections fines pour obtenir un effet de transition naturel.

L'optimisation des performances MySQL doit commencer à partir de trois aspects: configuration d'installation, indexation et optimisation des requêtes, surveillance et réglage. 1. Après l'installation, vous devez ajuster le fichier my.cnf en fonction de la configuration du serveur, tel que le paramètre innodb_buffer_pool_size, et fermer query_cache_size; 2. Créez un index approprié pour éviter les index excessifs et optimiser les instructions de requête, telles que l'utilisation de la commande Explication pour analyser le plan d'exécution; 3. Utilisez le propre outil de surveillance de MySQL (ShowProcessList, Showstatus) pour surveiller la santé de la base de données, et sauvegarde régulièrement et organisez la base de données. Ce n'est qu'en optimisant en continu ces étapes que les performances de la base de données MySQL peuvent être améliorées.

MySQL a une version communautaire gratuite et une version d'entreprise payante. La version communautaire peut être utilisée et modifiée gratuitement, mais le support est limité et convient aux applications avec des exigences de stabilité faibles et des capacités techniques solides. L'Enterprise Edition fournit une prise en charge commerciale complète pour les applications qui nécessitent une base de données stable, fiable et haute performance et disposées à payer pour le soutien. Les facteurs pris en compte lors du choix d'une version comprennent la criticité des applications, la budgétisation et les compétences techniques. Il n'y a pas d'option parfaite, seulement l'option la plus appropriée, et vous devez choisir soigneusement en fonction de la situation spécifique.

La plume PS est un effet flou du bord de l'image, qui est réalisé par la moyenne pondérée des pixels dans la zone de bord. Le réglage du rayon de la plume peut contrôler le degré de flou, et plus la valeur est grande, plus elle est floue. Le réglage flexible du rayon peut optimiser l'effet en fonction des images et des besoins. Par exemple, l'utilisation d'un rayon plus petit pour maintenir les détails lors du traitement des photos des caractères et l'utilisation d'un rayon plus grand pour créer une sensation brumeuse lorsque le traitement de l'art fonctionne. Cependant, il convient de noter que trop grand, le rayon peut facilement perdre des détails de bord, et trop petit, l'effet ne sera pas évident. L'effet de plumes est affecté par la résolution de l'image et doit être ajusté en fonction de la compréhension de l'image et de la saisie de l'effet.

L'interface de chargement de la carte PS peut être causée par le logiciel lui-même (corruption de fichiers ou conflit de plug-in), l'environnement système (corruption du pilote ou des fichiers système en raison), ou matériel (corruption du disque dur ou défaillance du bâton de mémoire). Vérifiez d'abord si les ressources informatiques sont suffisantes, fermez le programme d'arrière-plan et publiez la mémoire et les ressources CPU. Correction de l'installation de PS ou vérifiez les problèmes de compatibilité pour les plug-ins. Mettre à jour ou tomber la version PS. Vérifiez le pilote de la carte graphique et mettez-le à jour et exécutez la vérification du fichier système. Si vous résumez les problèmes ci-dessus, vous pouvez essayer la détection du disque dur et les tests de mémoire.
