Maison > développement back-end > Tutoriel Python > Un exemple de tutoriel pour créer une classe simple

Un exemple de tutoriel pour créer une classe simple

零下一度
Libérer: 2017-06-25 09:55:23
original
2230 Les gens l'ont consulté

Créez une classe simple

Chaque colonne d'instance créée à partir de la classe Dog stockera le nom et l'âge. Nous avons donné à chaque chiot la possibilité de s'accroupir (sit()) et de rouler (roll_over()) :

 1 class Dog(): 2     """一次模拟小狗的简单尝试""" 3     def __init__(self, name, age): 4         """初始化属性name和age""" 5         self.name = name 6         self.age = age 7     def sit(self): 8         """模拟小狗被命令时蹲下""" 9         print(self.name.title() + "now is sitting.")10     def roll_over(self):11         """模拟小狗被命令时打滚"""12         print(self.name.title() + "rolled over!")13 my_dog = Dog('tom','3')14 print("my dog name is " + my_dog.name.title() )
Copier après la connexion
Selon la convention, en Python, les prénoms avec les majuscules font référence aux classes : les fonctions dans une classe sont appelées méthodes
méthode __init__(), avec 2 traits de soulignement au début et à la fin, c'est une convention conçue pour éviter Python Il y a un conflit de nom entre la méthode par défaut et la méthode normale. Nous définissons la méthode __init__() pour contenir trois paramètres formels : self, name et age. Dans la définition de cette méthode, le paramètre self est essentiel et doit être situé avant les autres paramètres formels. Pourquoi le paramètre formel self doit-il être inclus dans la définition de la méthode ? Parce que lorsque Python appelle cette méthode __init__() pour créer une instance Dog, le paramètre réel self sera automatiquement transmis. Les deux variables self_name et self_age sont préfixées par self. Les variables préfixées par self sont disponibles pour toutes les méthodes de la classe. Nous pouvons également accéder à ces variables via n'importe quelle colonne d'instance de la classe. Les variables comme celle-ci qui sont accessibles via une instance sont appelées propriétés.
Dans python2.X, si vous créez une classe, vous devez ajouter (objet) après les parenthèses.

Accès aux propriétés

En continuant avec l'exemple ci-dessus, la méthode __init__() crée une instance représentant un chiot spécifique et lui définit la valeur que nous fournissons. les attributs nom et âge, et la méthode __init__() ne contiennent pas explicitement d'instruction return, mais python renvoie automatiquement un exemple représentant ce chiot. Nous stockons cet exemple dans la variable my_dog.
class Dog():"""一次模拟小狗的简单尝试"""def __init__(self, name, age):"""初始化属性name和age"""self.name = name
        self.age = agedef sit(self):"""模拟小狗被命令时蹲下"""print(self.name.title() + " now is sitting.")def roll_over(self):"""模拟小狗被命令时打滚"""print(self.name.title() + " rolled over!")
my_dog = Dog('tom',3)print(my_dog.name)print(my_dog.age)#运行结果tom3
Copier après la connexion

Méthode d'appel

class Dog():"""一次模拟小狗的简单尝试"""def __init__(self, name, age):"""初始化属性name和age"""self.name = name
        self.age = agedef sit(self):"""模拟小狗被命令时蹲下"""print(self.name.title() + " now is sitting.")def roll_over(self):"""模拟小狗被命令时打滚"""print(self.name.title() + " rolled over!")
my_dog = Dog('tom',3)
my_dog.sit()
my_dog.roll_over()#运行结果Tom now is sitting.
Tom rolled over!
Copier après la connexion

Selon Chien class Après avoir créé une instance, vous pouvez utiliser la notation point pour appeler n'importe quelle méthode définie par Dog

Créer plusieurs instances

class Dog():"""一次模拟小狗的简单尝试"""def __init__(self, name, age):"""初始化属性name和age"""self.name = name
        self.age = agedef sit(self):"""模拟小狗被命令时蹲下"""print(self.name.title() + " now is sitting.")def roll_over(self):"""模拟小狗被命令时打滚"""print(self.name.title() + " rolled over!")
my_dog = Dog('tom',3)
your_dog = Dog('Mei',2)print("My dog name is " + my_dog.name.title())print("Your dog name is " + your_dog.name.title())#运行结果My dog name is Tom
Your dog name is Mei
Copier après la connexion

Vous pouvez créer n'importe quel nombre d'instances en fonction de la classe selon vos besoins.

Utiliser des classes et des instances

Attribuer des valeurs par défaut aux propriétés

Chaque propriété d'une classe doit avoir une initiale value , même si la valeur est 0 ou une chaîne vide, dans certains cas, comme lors de la définition d'une valeur par défaut, vous pouvez spécifier cette valeur initiale dans la méthode __init__(). Si vous faites cela pour un attribut, il y a. pas besoin de Contient des paramètres formels qui assurent son initialisation.
class Car():"""一次模拟汽车的简单尝试"""def __init__(self, make, model, year):"""汽车的初始化"""self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 100def get_descri_name(self):"""描述汽车"""long_name = str(self.year) + ' ' + self.model + ' ' + self.makereturn long_name
my_car = Car('audi', 'a4', '2017')print(my_car.model)print(my_car.get_descri_name())#运行结果a42017 a4 audi
Copier après la connexion

Modifiez directement la valeur de l'attribut

class Car():"""一次模拟汽车的简单尝试"""def __init__(self, make, model, year):"""汽车的初始化"""self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 100def get_descri_name(self):"""描述汽车"""long_name = str(self.year) + ' ' + self.model + ' ' + self.makereturn long_name
my_car = Car('audi', 'a4', '2017')print(my_car.get_descri_name())
my_car.year = 2016print(my_car.get_descri_name())#运行结果2017 a4 audi2016 a4 audi
Copier après la connexion

Modifiez-la via des méthodes

class Car():"""一次模拟汽车的简单尝试"""def __init__(self, make, model, year):"""汽车的初始化"""self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 100def get_descri_name(self):"""描述汽车"""long_name = str(self.year) + ' ' + self.model + ' ' + self.makereturn long_namedef update(self, mile):"""更新里程值"""if mile > self.odometer_reading:
            self.odometer_reading = mileelse:print("You can't roll back an odometer")def increment_odometer(self,mile):"""增加里程"""self.odometer_reading += miledef read_odometer(self):"""打印汽车的里程"""print("This car has " + str(self.odometer_reading) + " miles on it.")
my_car = Car('audi', 'a4', '2017')
my_car.read_odometer()
my_car.odometer_reading = 10    #直接修改里程值my_car.update(200)     #通过方法修改里程my_car.read_odometer()
my_car.increment_odometer(10)
my_car.read_odometer()#运行结果This car has 100 miles on it.
This car has 200 miles on it.
This car has 210 miles on it.
Copier après la connexion

Héritage

Si nous voulons qu'une autre classe hérite des attributs d'une autre classe, nous pouvons Ajoutez le nom de la classe entre parenthèses, par exemple :

class Car():"""一次模拟汽车的简单尝试"""def __init__(self, make, model, year):"""汽车的初始化"""self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 100def get_descri_name(self):"""描述汽车"""long_name = str(self.year) + ' ' + self.model + ' ' + self.makereturn long_namedef update(self, mile):"""更新里程值"""if mile > self.odometer_reading:
            self.odometer_reading = mileelse:print("You can't roll back an odometer")def increment_odometer(self,mile):"""增加里程"""self.odometer_reading += miledef read_odometer(self):"""打印汽车的里程"""print("This car has " + str(self.odometer_reading) + " miles on it.")class ElectricCar(Car):"""电动汽车的独特特性"""def __init__(self, make, model, year):"""初始化父类的属性"""super().__init__(make, model, year)
my_tesla = ElectricCar('tesla', 'model s', '2016')print(my_tesla.get_descri_name())#运行结果2016 model s tesla
Copier après la connexion

Afin d'hériter des attributs de la classe parent, doit également ajouter une fonction spéciale super( ) Pour aider python La classe mari et la sous-classe sont associées.

Dans python2. Attributs et méthodes de définition de classe Après avoir laissé une classe hériter d'une autre classe, vous pouvez ajouter de nouveaux attributs et méthodes qui distinguent la sous-classe et la classe parent.
Utiliser l'instance comme attribut
class Car():"""一次模拟汽车的简单尝试"""def __init__(self, make, model, year):"""汽车的初始化"""self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 100def get_descri_name(self):"""描述汽车"""long_name = str(self.year) + ' ' + self.model + ' ' + self.makereturn long_namedef update(self, mile):"""更新里程值"""if mile > self.odometer_reading:
            self.odometer_reading = mileelse:print("You can't roll back an odometer")def increment_odometer(self,mile):"""增加里程"""self.odometer_reading += miledef read_odometer(self):"""打印汽车的里程"""print("This car has " + str(self.odometer_reading) + " miles on it.")class Battery():"""一次模拟电动汽车"""def __init__(self,battery_size=70):"""初始化电瓶的属性"""self.battery_size = battery_sizedef describe_battery(self):"""打印一条描述电瓶容量的消息"""print("This car has a " + str(self.battery_size) + "-kwh battery.")class ElectricCar(Car):"""电动汽车的独特特性"""def __init__(self, make, model, year):"""初始化父类的属性"""super().__init__(make, model, year)
        self.battery = Battery()
my_tesla = ElectricCar('tesla', 'model s', '2016')print(my_tesla.get_descri_name())
my_tesla.battery.describe_battery()#运行结果2016 model s tesla
This car has a 70-kwh battery.
Copier après la connexion
Importer la classe

Importer une ou plusieurs classes

Un fichier car.py
Créez un autre fichier my_car.py et importez une classe
class Car():"""一次模拟汽车的简单尝试"""def __init__(self, make, model, year):"""汽车的初始化"""self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 100def get_descri_name(self):"""描述汽车"""long_name = str(self.year) + ' ' + self.model + ' ' + self.makereturn long_namedef update(self, mile):"""更新里程值"""if mile > self.odometer_reading:
            self.odometer_reading = mileelse:print("You can't roll back an odometer")def increment_odometer(self,mile):"""增加里程"""self.odometer_reading += miledef read_odometer(self):"""打印汽车的里程"""print("This car has " + str(self.odometer_reading) + " miles on it.")class Battery():"""一次模拟电动汽车"""def __init__(self,battery_size=70):"""初始化电瓶的属性"""self.battery_size = battery_sizedef describe_battery(self):"""打印一条描述电瓶容量的消息"""print("This car has a " + str(self.battery_size) + "-kwh battery.")class ElectricCar(Car):"""电动汽车的独特特性"""def __init__(self, make, model, year):"""初始化父类的属性"""super().__init__(make, model, year)
        self.battery = Battery()
Copier après la connexion

Plusieurs classes peuvent être stockées dans un seul module, de sorte que plusieurs classes peuvent être importées en même temps
from  car import Car
my_car = Car('audi', 'a4', '2017')
Copier après la connexion

Importer tout le module
from car import Car,Battery,ElectricCar
my_tesla = ElectricCar('tesla', 'model s', '2016')print(my_tesla.get_descri_name())
my_tesla.battery.describe_battery()
Copier après la connexion

Importer toutes les classes
import car     #导入整个模块的时候,需要使用句点表示法访问需要的类
my_tesla = car.ElectricCar('tesla', 'model s', '2016')print(my_tesla.battery)
Copier après la connexion

from car import *    #导入所有的类
Copier après la connexion

 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal