Caso de embalaje orientado a objetos II

Caso de embalaje orientado a objetos II

objetivos

  • Caso de asalto de soldado
  • Operador de identidad

Paquete

  1. La encapsulación  es una característica importante de la programación orientada a objetos
  2. Programación orientada a objetos en  el primer paso  : los  atributos  y  métodos  empaquetados  en una clase abstracta   en
  3. El mundo exterior  usa la  clase para  crear el  objeto y luego  deja que el objeto llame al método
  4. Los detalles de los métodos de objeto  están  encapsulados  dentro de la  clase.

Las propiedades de un objeto   pueden ser  objetos creados por otra clase.

01. asalto soldado

demanda

  1. El soldado  Xu Sanduo  tiene un  AK47
  2. Los soldados  pueden  disparar
  3. El arma  puede  disparar  balas
  4.  Cargar el arma con  balas  :  aumentar el número de balas

1.1 Desarrollar armas

shoot Requisitos del método

  • 1> Juzga si hay una bala, no puedes disparar sin una bala
  • 2> Usa la  print señal para disparar y generar el número de balas
class Gun:

    def __init__(self, model):

        # 枪的型号
        self.model = model
        # 子弹数量
        self.bullet_count = 0

    def add_bullet(self, count):

        self.bullet_count += count

    def shoot(self):

        # 判断是否还有子弹
        if self.bullet_count <= 0:
            print("没有子弹了...")

            return

        # 发射一颗子弹
        self.bullet_count -= 1
        
        print("%s 发射子弹[%d]..." % (self.model, self.bullet_count))

# 创建枪对象
ak47 = Gun("ak47")
ak47.add_bullet(50)
ak47.shoot()

'

1.2 Desarrollar soldados

Supuesto: todos los reclutas  no tienen armas

Definir un atributo sin valor inicial

Al definir atributos, si  no sabe qué valor inicial establecer, puede establecerlo en None

  • None Las palabras clave no  significan  nada
  • Representa un  objeto vacío , sin métodos ni propiedades, es una constante especial
  • Puede  None asignarse a cualquier variable

fire Requisitos del método

  • 1> Determina si hay un arma, no puedes cargar sin un arma
  • 2> Grita un eslogan
  • 3> cargando balas
  • 4> Disparo
class Soldier:

    def __init__(self, name):

        # 姓名
        self.name = name
        # 枪,士兵初始没有枪 None 关键字表示什么都没有
        self.gun = None

    def fire(self):

        # 1. 判断士兵是否有枪
        if self.gun is None:
            print("[%s] 还没有枪..." % self.name)

            return

        # 2. 高喊口号
        print("冲啊...[%s]" % self.name)

        # 3. 让枪装填子弹
        self.gun.add_bullet(50)

        # 4. 让枪发射子弹
        self.gun.shoot()

 

resumen

  1. Creó una  clase de soldado , usando  __init__ métodos integrados
  2. Al definir atributos, si  no sabe qué valor inicial establecer, puede establecerlo en None
  3. Dentro del   método encapsulado , también puede hacer que  sus propias  propiedades de objeto creadas por otras clases  llamen al  método encapsulado

02. Operador de identidad

El operador de identidad se utiliza para  comparar  si  las direcciones de memoria de dos objetos  son iguales,  si es una referencia al mismo objeto

  • Que  Python se  None recomienda el uso de is juicio cuando se comparan 
| 运算符 | 描述 | 实例 |
| --- | --- | --- |
| is | is 是判断两个标识符是不是引用同一个对象 | x is y,类似 id(x) == id(y) |
| is not | is not 是判断两个标识符是不是引用不同对象 | x is not y,类似 id(a) != id(b) |

La diferencia entre is y ==:

is Se usa para determinar si  dos objetos de referencia de variable son iguales, se ==  usa para determinar si  el valor de la variable de referencia  es igual

>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> b is a 
False
>>> b == a
True

 

Supongo que te gusta

Origin blog.csdn.net/yinzhen_boke_0321/article/details/100110615
Recomendado
Clasificación