Explicación detallada de orientado a objetos en python (encendido)

Definir una clase

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

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

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

print(d1.name)

Agregue atributos en el método __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

atributos propios y predeterminados

Self representa la instancia actual . Cuando creamos una instancia, self en la plantilla representa nuestra instancia. Podemos acceder a las propiedades de la instancia actual y llamar a los métodos de la instancia actual a través de 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
  • Atributos predeterminados

Cuando definamos el método por primera vez, habrá atributos predeterminados. Por ejemplo, el volumen de sangre es de 10 gotas al principio, por lo que es el atributo predeterminado. No es necesario que le pasemos un valor en los parámetros del método, directamente en el método Simplemente defínalo en el atributo:

# 定义一个模板
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

Acceder a atributos y modificar atributos

Esto es bastante simple, imprima los atributos de la instancia de salida y luego reasigne los atributos de la instancia:

# 定义一个模板
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

Crea una instancia y crea varias instancias

#!/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)

Cómo agregar y usar

Ahora queremos que Rhubarb Erhei comience a reportar sus propios datos, así que agregue un método 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()

Llamar es aburrido, ¡construyamos un método de ataque () para dejarlos luchar!

# 定义一个模板
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)

Cambiar propiedades a través de métodos

Es decir, definir un método que pueda modificar el atributo de fuerza, el volumen sanguíneo mínimo es 0 y no puede haber valores negativos. El código modificado:

# -*- 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()

Entrenamiento combinado

coche

Cree una clase llamada Car cuyo método __init __ () establece dos atributos: nombre y marca (marca).
Defina un método llamado show () cuya función es imprimir el nombre y la marca del automóvil.
Defina un método llamado run () e print: Car XX se está ejecutando. Donde XX representa el nombre del automóvil.
Cree una instancia denominada automóvil basada en esta clase, primero imprima sus dos atributos directamente a través de los atributos y luego llame a los dos métodos anteriores.

# -*- 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 coches

Cree 5 instancias de la clase escrita en el ejercicio 1 y llame al método show en cada instancia.

# -*- 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()

Cerdo

Cree una clase llamada Pig, que contenga el nombre de los atributos y el peso.
Defina un método llamado show () para imprimir la información básica de Pig;
defina un método llamado run () para imprimir: 'XX: No he comido carne de cerdo, ¡Deja que veas correr al cerdo! '.
Cree varias instancias que representen cerdos diferentes y llame a los dos métodos anteriores en cada instancia.

# -*- 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()
Número de personas

En la clase Coche para completar el ejercicio 1, agregue un atributo llamado número_de_personas y establezca su valor predeterminado en 0. Agregue un atributo llamado max_people, lo que significa que puede haber como máximo algunas personas en el automóvil. Modifique el método de construcción correspondiente y pase el valor de max_people.
Agregue un método llamado set_people (), que le permite establecer la cantidad de personas en el automóvil, pero no puede exceder el límite de max_people.
Agregue un método llamado enlarge_people (). Cada llamada a este método aumentará el número de personas en el automóvil en 1, pero no puede exceder el límite de max_people.
Agregue un método llamado reduce_people (). Cada llamada a este método reducirá la cantidad de personas en el automóvil en 1, pero como máximo se reducirá a 0.
Cree una instancia llamada automóvil basada en esta clase e imprima dos de ellas directamente a través de los atributos Propiedades y luego llame a los dos métodos anteriores. ; Imprima cuántas personas hay en el automóvil, luego llame a los 3 métodos anteriores varias veces e imprima la cantidad de personas en el automóvil.

# -*- 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()

Supongo que te gusta

Origin blog.csdn.net/qq_43573676/article/details/108735176
Recomendado
Clasificación