python继承和抽象类的实现方法
本文实例讲述了python继承和抽象类的实现方法。分享给大家供大家参考。
具体实现方法如下:
# Fig 9.9: fig09_09.py
# Creating a class hierarchy with an abstract base class.
class Employee:
"""Abstract base class Employee"""
def __init__(self, first, last):
"""Employee constructor, takes first name and last name.
NOTE: Cannot create object of class Employee."""
if self.__class__ == Employee:
raise NotImplementedError, \
"Cannot create object of class Employee"
self.firstName = first
self.lastName = last
def __str__(self):
"""String representation of Employee"""
return "%s %s" % (self.firstName, self.lastName)
def _checkPositive(self, value):
"""Utility method to ensure a value is positive"""
if value raise ValueError, \
"Attribute value (%s) must be positive" % value
else:
return value
def earnings(self):
"""Abstract method; derived classes must override"""
raise NotImplementedError, "Cannot call abstract method"
class Boss(Employee):
"""Boss class, inherits from Employee"""
def __init__(self, first, last, salary):
"""Boss constructor, takes first and last names and salary"""
Employee.__init__(self, first, last)
self.weeklySalary = self._checkPositive(float(salary))
def earnings(self):
"""Compute the Boss's pay"""
return self.weeklySalary
def __str__(self):
"""String representation of Boss"""
return "%17s: %s" % ("Boss", Employee.__str__(self))
class CommissionWorker(Employee):
"""CommissionWorker class, inherits from Employee"""
def __init__(self, first, last, salary, commission, quantity):
"""CommissionWorker constructor, takes first and last names,
salary, commission and quantity"""
Employee.__init__(self, first, last)
self.salary = self._checkPositive(float(salary))
self.commission = self._checkPositive(float(commission))
self.quantity = self._checkPositive(quantity)
def earnings(self):
"""Compute the CommissionWorker's pay"""
return self.salary + self.commission * self.quantity
def __str__(self):
"""String representation of CommissionWorker"""
return "%17s: %s" % ("Commission Worker",
Employee.__str__(self))
class PieceWorker(Employee):
"""PieceWorker class, inherits from Employee"""
def __init__(self, first, last, wage, quantity):
"""PieceWorker constructor, takes first and last names, wage
per piece and quantity"""
Employee.__init__(self, first, last)
self.wagePerPiece = self._checkPositive(float(wage))
self.quantity = self._checkPositive(quantity)
def earnings(self):
"""Compute PieceWorker's pay"""
return self.quantity * self.wagePerPiece
def __str__(self):
"""String representation of PieceWorker"""
return "%17s: %s" % ("Piece Worker",
Employee.__str__(self))
class HourlyWorker(Employee):
"""HourlyWorker class, inherits from Employee"""
def __init__(self, first, last, wage, hours):
"""HourlyWorker constructor, takes first and last names,
wage per hour and hours worked"""
Employee.__init__(self, first, last)
self.wage = self._checkPositive(float(wage))
self.hours = self._checkPositive(float(hours))
def earnings(self):
"""Compute HourlyWorker's pay"""
if self.hours return self.wage * self.hours
else:
return 40 * self.wage + (self.hours - 40) * \
self.wage * 1.5
def __str__(self):
"""String representation of HourlyWorker"""
return "%17s: %s" % ("Hourly Worker",
Employee.__str__(self))
# main program
# create list of Employees
employees = [ Boss("John", "Smith", 800.00),
CommissionWorker("Sue", "Jones", 200.0, 3.0, 150),
PieceWorker("Bob", "Lewis", 2.5, 200),
HourlyWorker("Karen", "Price", 13.75, 40) ]
# print Employee and compute earnings
for employee in employees:
print "%s earned $%.2f" % (employee, employee.earnings())
输出结果如下:
Boss: John Smith earned $800.00
Commission Worker: Sue Jones earned $650.00
Piece Worker: Bob Lewis earned $500.00
Hourly Worker: Karen Price earned $550.00
希望本文所述对大家的Python程序设计有所帮助。

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.

La principale différence entre une classe abstraite et une interface est qu'une classe abstraite peut contenir la mise en œuvre d'une méthode, tandis qu'une interface ne peut définir la signature d'une méthode. 1. La classe abstraite est définie à l'aide du mot-clé abstrait, qui peut contenir des méthodes abstraites et concrètes, adaptées pour fournir des implémentations par défaut et un code partagé. 2. L'interface est définie à l'aide du mot clé de l'interface, qui ne contient que des signatures de méthode, qui conviennent à la définition des normes comportementales et de l'héritage multiple.

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.

Dans PhPoop, self :: fait référence à la classe actuelle, Parent :: fait référence à la classe parent, static :: est utilisé pour la liaison statique tardive. 1. self :: est utilisé pour la méthode statique et les appels constants, mais ne prend pas en charge la liaison statique tardive. 2.Parent :: est utilisé pour que les sous-classes appellent les méthodes de classe parent, et les méthodes privées ne sont pas accessibles. 3.Static :: prend en charge la liaison statique tardive, adaptée à l'héritage et au polymorphisme, mais peut affecter la lisibilité du code.

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.

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.

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.

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.
