Explication détaillée de l'orientation objet en python (on)

Définir une classe

# 定义一个类
class Dog():
    pass

# 实例化一个类
d1 = Dog()
d2 = Dog()

# 给实例赋予一个属性name
d1.name = '大黄'

print(d1.name)

Ajouter des attributs dans la méthode __init __ ()

# 定义一个类
class Dog():

    def __init__(self,name,height,blood,power):
        self.name = name
        self.height = height
        self.blood = blood
        self.power = power

# 实例化一个类并给属性赋值
d1 = Dog('大黄',0.7,10,3)
d2 = Dog('二黑',0.5,10,4)

# 输出实例的属性值
print d1.name
print d2.name

attributs self et default

Self représente l'instance actuelle . Lorsque nous créons une instance, self dans le modèle représente notre instance. Nous pouvons accéder aux propriétés de l'instance actuelle et appeler les méthodes de l'instance actuelle via self :

# 定义一个模板
class Dog():
    # 构造方法
    def __init__(self,name,height,blood,power):
    	# 此时self代表了我们要定义的实例
        self.name = name
        self.height = height
        self.blood = blood
        self.power = power

# 实例化一个类并给属性赋值
d1 = Dog('大黄',0.7,10,3)
d2 = Dog('二黑',0.5,10,4)

# 输出实例的属性值
print d1.name
print d2.name
  • Attributs par défaut

Lorsque nous définissons la méthode pour la première fois, il y aura des attributs par défaut. Par exemple, le volume sanguin est de 10 gouttes au début, c'est donc l'attribut par défaut. Nous n'avons pas besoin de lui transmettre une valeur dans les paramètres de la méthode, directement dans la méthode Définissez-le simplement dans l'attribut:

# 定义一个模板
class Dog():
    # 构造方法
    def __init__(self,name,height,power):
        self.name = name
        self.height = height
        # 设置血量为默认属性,值为10
        self.blood = 10
        self.power = power

# 实例化一个类并给属性赋值
d1 = Dog('大黄',0.7,3)
d2 = Dog('二黑',0.5,4)

# 输出实例的属性值
print d1.name
print d2.name
print d1.blood
print d2.blood

Accéder aux attributs et modifier les attributs

C'est assez simple, imprimez les attributs d'instance de sortie, puis réassignez les attributs d'instance:

# 定义一个模板
class Dog():
    # 构造方法
    def __init__(self,name,height,power):
        self.name = name
        self.height = height
        # 设置血量为默认属性,值为10
        self.blood = 10
        self.power = power

# 实例化一个类并给属性赋值
d1 = Dog('大黄',0.7,3)
d2 = Dog('二黑',0.5,4)

# 输出实例的属性值
print d1.power
# 修改实例的属性
d1.power = 9999
# 输出
print d1.power

Créer une instance et créer plusieurs instances

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2020/10/23 16:28
# @Author  : Shadow
# @Site    : 
# @File    : 简单的类.py
# @Software: PyCharm

# 定义一个模板
class Dog():
    # 构造方法
    def __init__(self,name,height,power):
        self.name = name
        self.height = height
        # 设置血量为默认属性,值为10
        self.blood = 10
        self.power = power

# 创建多个实例
d1 = Dog('大黄',0.7,3)
d2 = Dog('二黑',0.5,4)

# 输出实例的属性值
print d1.name
print d2.name

# 用id()输出实例的内存地址
print id(d1)
print id(d2)

Comment ajouter et utiliser

Maintenant, nous voulons que Rhubarb Erhei commence à rapporter ses propres données, alors ajoutez une méthode bark ():

# 定义一个模板
class Dog():
    # 构造方法
    def __init__(self,name,height,power):
        self.name = name
        self.height = height
        # 设置血量为默认属性,值为10
        self.blood = 10
        self.power = power
    # 添加一个方法bark
    def bark(self):
        print '我是{},身高{},攻击力{},血量{}'.format(self.name,self.height,self.power,self.blood)

# 创建多个实例
d1 = Dog('大黄',0.7,3)
d2 = Dog('二黑',0.5,4)
# 使用构造的方法
d1.bark()
d2.bark()

L'appel est ennuyeux, construisons une méthode attack () pour les laisser se battre!

# 定义一个模板
class Dog():
    # 构造方法
    def __init__(self,name,height,power):
        self.name = name
        self.height = height
        # 设置血量为默认属性,值为10
        self.blood = 10
        self.power = power
    # 添加一个方法bark
    def bark(self):
        print '我是{},身高{},攻击力{},血量{}'.format(self.name,self.height,self.power,self.blood)
    # 再添加一个attack()方法来执行攻击这个行为
    def attack(self,dog):
        dog.blood = dog.blood-self.power
        if dog.blood > 0:
            print '{}的剩余血量为:{}'.format(dog.name,dog.blood)
        else:
            print '{}击杀了{}!'.format(self.name,dog.name)

# 创建多个实例
d1 = Dog('大黄',0.7,3)
d2 = Dog('二黑',0.5,4)

# 修改d1的攻击力
d1.power = 999

# 使用构造的方法
d1.bark()
d2.bark()

# 使用attack()方法让d1攻击d2,并输出d2的状态
d1.attack(d2)

Modifier les propriétés via des méthodes

C'est-à-dire définir une méthode qui peut modifier l'attribut de force, le volume sanguin minimum est de 0 et il ne peut y avoir aucune valeur négative. Le code modifié:

# -*- coding: gbk -*-


# 定义一个模板
class Dog():
    # 构造方法
    def __init__(self,name,height,power):
        self.name = name
        self.height = height
        # 设置血量为默认属性,值为10
        self.blood = 10
        self.power = power
    # 添加一个方法bark
    def bark(self):
        print '我是{},身高{},攻击力{},血量{}'.format(self.name,self.height,self.power,self.blood)
    # 修改attack方法,在attack中调用reduce_blood方法
    def attack(self,dog):
        dog.reduce_blood = dog.reduce_blood(self.power)
        if dog.blood > 0:
            print '{}的剩余血量为:{}'.format(dog.name,dog.blood)
        else:
            print '{}击杀了{}!'.format(self.name,dog.name)
    # 构造一个可以修改实例属性值的方法reduce_blood
    def reduce_blood(self,reduce_value):
        if reduce_value > self.blood:
            self.blood = 0
        else:
            self.blood = self.blood - reduce_value
            

# 创建多个实例
d1 = Dog('大黄',0.7,3)
d2 = Dog('二黑',0.5,4)

# 使用构造的方法
# d1.bark()

# 通过方法reduce_blood()修改属性
d1.attack(d2)

# 输出详细属性
d2.bark()

Formation combinée

voiture

Créez une classe nommée Car dont la méthode __init __ () définit deux attributs: nom et marque (marque).
Définissez une méthode nommée show () dont la fonction est d'imprimer le nom et la marque de la voiture.
Définissez une méthode appelée run () et imprimez: La voiture XX est en marche. Où XX représente le nom de la voiture.
Créez une instance nommée voiture basée sur cette classe, imprimez d'abord ses deux attributs directement via les attributs, puis appelez les deux méthodes ci-dessus.

# -*- coding: gbk -*-

# 创建一个名为Car的对象
class Car:
    
    # 构造__init__方法传值并输出name和brand
    def __init__(self,name,brand):
        self.name = name
        self.brand = brand
    # 构造show方法来输出实例的属性值
    def show(self):
        print self.name
        print self.brand
    # 构造run方法来让汽车跑起来
    def run(self):
        print '{}跑起来了~'.format(self.name)


# 直接输出实例的属性
car = Car('Evo','Mitsubishi')
print car.name,car.brand

# 通过上面两个方法输出实例的属性
car.show()
car.run()
5 voitures

Créez 5 instances de la classe écrite dans l'exercice 1 et appelez la méthode show sur chaque instance.

# -*- coding: gbk -*-

# 创建一个名为Car的对象
class Car:
    
    # 构造__init__方法传值并输出name和brand
    def __init__(self,name,brand):
        self.name = name
        self.brand = brand
    # 构造show方法来输出实例的属性值
    def show(self):
        print self.name
        print self.brand
    # 构造run方法来让汽车跑起来
    def run(self):
        print '{}跑起来了~'.format(self.name)


# 创建5个实例,并对每个实例调用show方法
car1 = Car('Evo','三菱')
car2 = Car('翼豹','斯巴鲁')
car3 = Car('Type-R','丰田')
car4 = Car('C63','奔驰')
car5 = Car('GT-R','日产')

# 调用方法
car1.show()
car2.show()
car3.show()
car4.show()
car5.show()

Porc

Créez une classe nommée Pig, qui contient le nom et le poids des attributs.
Définissez une méthode nommée show () pour imprimer les informations de base de Pig;
définissez une méthode nommée run () pour imprimer: 'XX: Je n'ai pas mangé de porc, Laissez-vous voir le cochon courir! ».
Créez plusieurs instances représentant différents porcs et appelez les deux méthodes ci-dessus sur chaque instance.

# -*- coding: gbk -*-

# 创建Pig类
class Pig:
    # 构造__init__方法进行传值
    def __init__(self,name,weight):
        self.name = name
        self.weight = weight
    # 构造show方法打印基本信息
    def show(self):
        print '你好!我是{},我{}kg~'.format(self.name,self.weight)
    # 构造run方法输出题目要求内容
    def run(self):
        print '{}:没吃过猪肉,让你看看猪跑~'.format(self.name)

# 实例化多个对象
pig1 = Pig('佩奇',90)
pig2 = Pig('乔治',60)

# pig1调用两个方法
pig1.show()
pig1.run()

# pig2调用两个方法
pig2.show()
pig2.run()
Nombre de personnes

Dans la classe Car pour terminer l'exercice 1, ajoutez un attribut nommé number_of_people et définissez sa valeur par défaut sur 0. Ajoutez un attribut appelé max_people, ce qui signifie qu'il peut y avoir au maximum quelques personnes dans la voiture. Modifiez la méthode de construction correspondante et passez la valeur de max_people.
Ajoutez une méthode appelée set_people (), qui vous permet de définir le nombre de personnes dans la voiture, mais ne peut pas dépasser la limite de max_people.
Ajoutez une méthode appelée augmenter_people (). Chaque appel à cette méthode augmentera le nombre de personnes dans la voiture de 1, mais il ne peut pas dépasser la limite de max_people.
Ajoutez une méthode appelée reduction_people (). Chaque fois que vous appelez cette méthode, le nombre de personnes dans la voiture sera réduit de 1, mais au maximum il sera réduit à 0.
Créez une instance nommée voiture basée sur cette classe et imprimez-en deux directement via des attributs Propriétés, puis appelez les deux méthodes ci-dessus. ; Imprimez le nombre de personnes dans la voiture, puis appelez plusieurs fois les 3 méthodes ci-dessus et imprimez le nombre de personnes dans la voiture.

# -*- coding: gbk -*-

# 创建一个名为Car的对象
class Car:
    
    # 构造__init__方法传值并输出name和brand
    def __init__(self,name,brand,max_people=5):
        self.name = name
        self.brand = brand
        self.max_people = max_people
        self.number_of_people = 0
        
    # 构造show方法来输出实例的属性值
    def show(self):
        print '{}:当前车内人数为:{}'.format(self.name,self.number_of_people)

    # 构造run方法来让汽车跑起来
    def run(self):
        print '{}跑起来了~'.format(self.name)

    # 构造set_people方法,设置车内初始人数
    def set_people(self,people):
        if people <= self.max_people:
            self.number_of_people = people
        else:
            print '超载啦!'

    # 构造increase_people方法,每次调用车内人数加一
    def increase_people(self):
        if self.number_of_people+1 <= self.max_people:
            self.number_of_people = self.number_of_people+1
        else:
            print '超载啦!'
            
    # 构造reduce_people方法,每次调用车内人数减一
    def reduce_people(self):
        if self.number_of_people-1 >= 0:
            self.number_of_people = self.number_of_people-1
        else:
            print '车里已经没人了!'

# 实例化对象car    
car = Car('Evo','三菱',5)

# 通过属性实例直接打印出属性name和brand
print car.name,car.brand

# 调用题目中要求的方法,并输出车内人数
car.increase_people()
car.reduce_people()
car.show()

# 按照题目要求,多次调用以上3个方法,并打印车内人数
car.set_people(5)
car.reduce_people()
car.increase_people()
car.reduce_people()
car.reduce_people()
car.increase_people()
car.reduce_people()
car.show()
car.set_people(5)
car.reduce_people()
car.increase_people()
car.reduce_people()
car.show()
car.run()

Je suppose que tu aimes

Origine blog.csdn.net/qq_43573676/article/details/108735176
conseillé
Classement