Caso de embalaje orientado a objetos II
objetivos
- Caso de asalto de soldado
- Operador de identidad
Paquete
- La encapsulación es una característica importante de la programación orientada a objetos
- Programación orientada a objetos en el primer paso : los atributos y métodos empaquetados en una clase abstracta en
- El mundo exterior usa la clase para crear el objeto y luego deja que el objeto llame al método
- 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
- El soldado Xu Sanduo tiene un AK47
- Los soldados pueden disparar
- El arma puede disparar balas
- 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
- Creó una clase de soldado , usando
__init__
métodos integrados - Al definir atributos, si no sabe qué valor inicial establecer, puede establecerlo en
None
- 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
seNone
recomienda el uso deis
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