オブジェクト指向のパッケージケースII
目的
- 兵士の襲撃事件
- アイデンティティ演算子
パッケージ
- カプセル化 は、オブジェクト指向プログラミングの主要な機能です
- 最初のステップでのオブジェクト指向のプログラミング -の 抽象クラス にパッケージ化された 属性 と メソッド
- 外の世界 は クラスを 使用してオブジェクトを作成し、 オブジェクトに メソッドを呼び出させます
- オブジェクトメソッドの詳細は され カプセル化された 内部 クラス
オブジェクトのプロパティは、別のクラスによって作成されたオブジェクトに することができます
01.兵士の襲撃
要求する
- 兵士 徐Sanduo はAK47を持っています
- 兵士 は発砲することができます
- ガンは でき 火災 弾丸を
- 銃 に弾丸を 装填する - 弾丸の数を増やす
1.1銃を開発する
shoot
メソッドの要件
- 1>弾丸があるかどうかを判断し、弾丸なしでは撃てない
- 2>
print
キューを使用して 弾丸の数を発射して出力します
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兵士を育成する
仮定:すべての新兵は銃を持ってい ません
初期値のない属性を定義する
属性を定義するときに、設定する初期値がわからない場合は、次のよう に設定できます。 None
None
キーワード は何の意味 もありません- 表す 空のオブジェクト、メソッドおよびプロパティことなく、特別な定数であります
- することができます
None
任意の変数に代入
fire
メソッドの要件
- 1>銃があるかどうかを確認します。銃なしでは充電できません
- 2>スローガンを叫ぶ
- 3>弾丸をロードする
- 4>撮影
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()
概要
- 組み込みのメソッドを使用して 、兵士クラスを作成しました
__init__
- 属性を定義するときに、設定する初期値がわからない場合は、次のよう に設定できます。
None
- カプセル化された メソッド内で、 他のクラスによって作成された独自の オブジェクトプロパティでカプセル化されたメソッドを 呼び出す こともでき ます。
02.アイデンティティオペレーター
ID演算子は、 2つのオブジェクトのメモリアドレスが同じであるかどうか、つまり同じオブジェクトへの参照であるかどうかを比較 する ために 使用され ます
- 比較するときは 判断を使用すること
Python
をNone
お勧めしますis
| 运算符 | 描述 | 实例 |
| --- | --- | --- |
| is | is 是判断两个标识符是不是引用同一个对象 | x is y,类似 id(x) == id(y) |
| is not | is not 是判断两个标识符是不是引用不同对象 | x is not y,类似 id(a) != id(b) |
isと==の違い:
is
かどうかを決定するために使用される 二つの可変参照オブジェクトが同じである、 ==
かどうかを決定するために使用する 参照変数の値が 等しいです
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> b is a
False
>>> b == a
True