Python 物件導向(二)

來源:互聯網
上載者:User

標籤:return   情況   子類   TE   erro   構造方法   .sh   eth   特殊   

 

類 ==> 執行個體化 ==> 執行個體對象

__init__ 建構函式

self.name = name # 屬性, 成員變數

def sayhi() # 方法, 動態屬性

def get_heart(self):

  return self.__heart # 提供對外提供者, 但是外部只能擷取其值,不能改變其值.

 

屬性

  • 公有屬性
    • 當所有屬於本類的對象都能訪問的屬性稱為公有屬性(即全域屬性, 在類中定義的, 而不是在某一個方法<包括構造方法>中定義的 ? 不對吧, java中全域變數也可以私人化的, 只是看有沒有private修飾而已).
  • 私人屬性
    • __private_attr_name = value
    • 強制訪問私人屬性方法: 執行個體對象_類名__屬性名稱

 

#!/usr/bin/python# -*- coding: utf-8 -*-class Role(object):    nationality = "JP"    def __init__(self, name, role, weapon, life_value=100, money=15000):        self.name = name        self.role = role        self.weapon = weapon        self.life_value = life_value  # 公有屬性        self.money = money        self.__heart = "Normal"  # 私人屬性, 對外不可見(相當於java的private)    def shot(self):        print("%s is shooting" % self.name)        self.__heart = "Dead"        print(self.__heart)  # 私人屬性可以內部訪問    def get_heart(self):        return self.__heart  # 提供對外提供者, 但是外部只能擷取其值,不能改變其值.    def got_shot(self):        print("ah... i got shot...")    def buy_gun(self, gun_name):        print("just bought %s" % gun_name)        self.weapon = gun_name  # 這樣如果買了什麼新武器, 也會同步更新屬性weapon的值r1 = Role(‘Alex‘, ‘police‘, ‘AK47‘)  # 產生一個角色r2 = Role(‘Jack‘, ‘terrorist‘, ‘B22‘)  # 產生一個角色r1.shot()r2.buy_gun(‘AK47‘)print(r2.weapon)  # 在buy_gun()方法中添加self.weapon = gun_name, 這樣若購買了新的武器, 就能更新屬性weapon的值# print(r1.get_heart())print(r1._Role__heart)  # 外部強行訪問一個私人屬性# 更改類的公有屬性有兩種方法Role.nationality = "US"  # 方法1. 所有對象的nationality值都會被更改.r1.natiocnality = "Thailand"  # 方法2.     只有對象r1的nationality值會被更改.def shot2(self):  # 在類中, 直接調用方法, 會自動把執行個體對象傳入方法. 在類外面的方法, 需要自己把執行個體傳入方法.    print("my own shot method")r1.shot = shot2r1.shot(r1) # 調用的其實是shot2()方法. 因方法shot2()不在類中, 所以需要自己把參數傳入.

 

 

物件導向的特性

  • 封裝
    • 對象和類概念的主要特性
    • 把客觀事物封裝成抽象的類, 並且類可以把自己的資料和方法只讓可信的類或對象操作, 對不可信的進行資訊屏蔽.
  • 繼承
    • 可以使用現在類的所有功能, 並在無需重新編寫原來類的情況下對這些功能進行擴充.
    • 通過繼承建立的新類稱為"子類"或"衍生類別".
    • 被繼承的類稱為"基類". "父類"或"超類".
    • 繼承的過程, 就是從一般到特殊的過程.

Python 物件導向(二)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.