índice
01. Embalagem
- O encapsulamento é um recurso importante da programação orientada a objetos
- Programação orientada a objetos na primeira etapa - os atributos e métodos empacotados em uma classe abstrata em
- O mundo exterior usa uma classe para criar um objeto e, em seguida, permite que o objeto chame métodos
- Detalhes do método do objeto são encapsulados no interior da classe
02. Caso 1_Xiao Ming Ai em execução
exigem
- Peso de Xiaoming
75.0
kg - Xiao Ming cada corredor perderá
0.5
quilo de peso - Xiao Ming cada comendo ganho de peso
1
kg
Dica: Objeto de método interno , ele pode acessar diretamente o objeto !
- Código:
class Person:
"""人类"""
def __init__(self, name, weight):
self.name = name
self.weight = weight
def __str__(self):
return "我的名字叫 %s 体重 %.2f 公斤" % (self.name, self.weight)
def run(self):
"""跑步"""
print("%s 爱跑步,跑步锻炼身体" % self.name)
self.weight -= 0.5
def eat(self):
"""吃东西"""
print("%s 是吃货,吃完这顿再减肥" % self.name)
self.weight += 1
xiaoming = Person("小明", 75)
xiaoming.run()
xiaoming.eat()
xiaoming.eat()
print(xiaoming)
03. Caso 2_ Móveis de mesa
exigem
- Casa (casa) tem unidades , a área total e lista de nomes de móveis
- A nova casa não tem mobília
- Móveis (HouseItem) têm nomes e abrangem uma área onde
- Simmons (cama) cobre uma área de
4
metros quadrados - Área do guarda-roupa (peito)
2
metros quadrados - Área da mesa (mesa)
1.5
m²
- Simmons (cama) cobre uma área de
- Os três móveis acima adicionados à casa em
- Ao imprimir uma casa, é necessário produzir: tipo de casa , área total , área restante , lista de nomes de móveis
Área restante
- Ao criar o objeto casa é definida uma propriedade da área restante , o valor inicial é igual à área total, e
- Quando você chama o
add_item
método, para adicionar móveis à sala , deixe a área restante - = área de móveis
3.1 Criar móveis
class HouseItem:
def __init__(self, name, area):
"""
:param name: 家具名称
:param area: 占地面积
"""
self.name = name
self.area = area
def __str__(self):
return "[%s] 占地面积 %.2f" % (self.name, self.area)
# 1. 创建家具
bed = HouseItem("席梦思", 4)
chest = HouseItem("衣柜", 2)
table = HouseItem("餐桌", 1.5)
print(bed)
print(chest)
print(table)
resumo
- Criei um móvel , para usar
__init__
e__str__
dois métodos embutidos - Use móveis para criar três objetos de móveis e informações de saída Móveis
3.2 Criar uma sala
class House:
def __init__(self, house_type, area):
"""
:param house_type: 户型
:param area: 总面积
"""
self.house_type = house_type
self.area = area
# 剩余面积默认和总面积一致
self.free_area = area
# 默认没有任何的家具
self.item_list = []
def __str__(self):
# Python 能够自动的将一对括号内部的代码连接在一起
return ("户型:%s\n总面积:%.2f[剩余:%.2f]\n家具:%s"
% (self.house_type, self.area,
self.free_area, self.item_list))
def add_item(self, item):
print("要添加 %s" % item)
...
# 2. 创建房子对象
my_home = House("两室一厅", 60)
my_home.add_item(bed)
my_home.add_item(chest)
my_home.add_item(table)
print(my_home)
resumo
- Criando uma classe de casa , para usar
__init__
e__str__
dois métodos embutidos - Preparando um
add_item
método pronto para adicionar móveis - Use a classe de casa para criar um objeto de casa
- Deixe os objetos da casa chamados de
add_item
método de três vezes , os três móveis para os argumentos passados para oadd_item
interior
3.3 Adicionar mobília
exigem
- 1> Analisando a área do móvel se excede ou excede a área restante , se excedido , não pode ser solicitado a adicionar o móvel
- 2> O nome do mobiliário adicionado à lista de nomes de móveis de
- 3> com a área restante da casa - área de móveis
def add_item(self, item):
print("要添加 %s" % item)
# 1. 判断家具面积是否大于剩余面积
if item.area > self.free_area:
print("%s 的面积太大,不能添加到房子中" % item.name)
return
# 2. 将家具的名称追加到名称列表中
self.item_list.append(item.name)
# 3. 计算剩余面积
self.free_area -= item.area
3.4 Resumo
- O programa principal é responsável apenas pela criação de objetos de casa e objetos de mobília
- Deixe o
add_item
método de chamada de objeto de casa ser adicionado à mobília da casa em - Cálculos de área , a área restante , lista de móveis e outros processos são encapsulados no interior da classe de casa
04. Caso 3_ Ataque de soldado
exigem
- Soldado Xu Sanduo tem uma AK47
- Soldados podem atirar
- Arma capaz de lançar uma bala
- Gun loading loading bullets - para aumentar o número de balas
4.1 Desenvolvimento de armas
shoot
Requisitos de método
- 1> Julgue se há balas, você não pode atirar sem balas
- 2> use
print
dicas de tiro e produz o 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()
4.2 Desenvolver Soldados
Suposições: Todos os recrutas não têm armas
Defina um atributo sem valor inicial
Ao definir atributos, se algo não souber a configuração do valor inicial , ele pode ser definido comoNone
None
A palavra-chave não representa nada- Denota um objeto nulo , sem métodos e propriedades, é uma constante especial
- Você pode ser
None
atribuído a qualquer variável
fire
Requisitos de método
- 1> Determine se há uma arma, você não pode carregar sem uma arma
- 2> Grite um slogan
- 3> Carregando marcadores
- 4> Tiro
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()
resumo
- Criando uma classe de soldado , use o
__init__
método integrado - Ao definir atributos, se algo não souber a configuração do valor inicial , ele pode ser definido como
None
- No pacote de métodos internos, você também pode fazer seus próprios objetos criados usando outras classes de chamadas de propriedade foram empacotados método
05. Operador de identidade
O operador de identidade é usado para comparar dois objetos de endereços de memória são os mesmos - se é uma referência ao mesmo objeto
Python
No ParaNone
comparação, é recomendado o uso deis
julgamento
Operador | Descrição | Instância |
---|---|---|
é | é julgar se dois identificadores se referem ao mesmo objeto | x é y, 类似 id (x) == id (y) |
não | não é julgar se dois identificadores se referem a objetos diferentes | x não é y, 类似 id (a)! = id (b) |
A diferença entre é e ==:
is
Para determinar duas variáveis, consulte o mesmo se o objeto
==
para determinar o valor da variável de referência é igual
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> b is a
False
>>> b == a
True