객체 지향 패키징 사례 II

객체 지향 패키징 사례 II

목표

  • 군인 폭행 사건
  • ID 연산자

꾸러미

  1. 캡슐화  는 객체 지향 프로그래밍의 주요 기능입니다.
  2. 객체 지향 프로그래밍  의 첫 번째 단계  -  속성  및  방법  포장  추상으로  클래스  에서
  3. 외부 세계  는  클래스를  사용하여  객체 를 만든 다음  객체가 메서드를 호출하도록합니다.
  4. 객체 메서드의 세부 사항은 클래스  내부  에  캡슐화 됩니다. 

개체의 속성은 다른 클래스에서 만든 개체 일   수 있습니다. 

01. 군인 폭행

수요

  1. 병사  Xu Sanduo  는 AK47을 가지고 있습니다. 
  2. 군인  은 발사 할 수 있습니다 
  3.  은  총알 발사 할 수 있습니다 
  4. 총알로  을로드   -  총알 수를 늘리십시오.

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

 

요약

  1.  내장 메소드를 사용하여  군인 클래스 생성 __init__
  2. 속성을 정의 할 때 설정할 초기 값모르는 경우 다음  과 같이 설정할 수 있습니다. None
  3. 캡슐화 된  메서드 내에서  다른 클래스에서 만든 자체  개체 속성을 캡슐화 된 메서드를  호출하도록  만들 수도 있습니다. 

02. ID 운영자

ID 연산자는  두 개체의  메모리 주소가  동일한 지 (동일한 개체에 대한 참조인지 여부)비교 하는 데 사용됩니다 

  • 그것은  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

 

추천

출처blog.csdn.net/yinzhen_boke_0321/article/details/100110615