python之物件導向

2021-10-05 16:44:35 字數 3996 閱讀 6159

類:是乙個特殊的物件,class a:定義的類屬於 類物件

類的例項:obj = a()屬於 例項物件

例項屬性:__init__定義例項屬性

例項方法:(self),物件名.方法名

類屬性:針對類物件定義的屬性,訪問類屬性方法:類名.類屬性/物件名.類屬性

類方法:針對類物件定義的方法,內部可直接訪問類屬性和其他類方法;類名.方法名

靜態方法:不需要訪問例項屬性、類屬性,也不用呼叫例項方法、類方法

私有屬性:物件不希望公開的屬性,訪問私有屬性:物件名._類名.__私有屬性

私有方法:物件不希望公開的方法,訪問私有方法(無法直接呼叫):物件名._類名.__私有方法

1.封裝例項應用

需求:房子(house) 有 戶型、總面積 和 家具名稱列表

新房子沒有任何的家具

家具(houseitem) 有 名字 和 占地面積,其中

席夢思(bed) 占地 4 平公尺

衣櫃(chest) 占地 2 平公尺

餐桌(table) 占地 1.5 平公尺

將以上三件 家具 新增 到 房子 中

列印房子時,要求輸出:戶型、總面積、剩餘面積、家具名稱列表

class game:

# 定義乙個類屬性

top_score = 0

def __init__(self, player_name):

"""定義乙個例項屬性

:param player_name:

"""self.player_name = player_name

@staticmethod

def show_help():

"""定義乙個靜態方法"""

print("遊戲幫助資訊")

@classmethod

def show_top_score(cls):

"""定義乙個類方法

:return:

"""print("玩家最高分為{}".format(cls.top_score))

def start_game(self):

"""定義乙個例項方法

:return:

"""print("{}開始遊戲了~".format(self.player_name))

game.top_score = 999

game.show_help() # 類名.靜態方法

game.show_top_score() # 類名.類方法

game = game("小明") # 建立物件,例項化

game.start_game() # 物件名.方法名()--例項方法

game.show_top_score()

----------------------------------------

#遊戲幫助資訊

#玩家最高分為0

#小明開始遊戲了~

#玩家最高分為999

需求:

士兵 zaygee 有一把 ak47

士兵 可以 **

槍 能夠 發射 子彈

槍 裝填 裝填子彈 —— 增加子彈數量

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("{}剩餘子彈{}".format(self.model, self.bullet_count))

class soldier:

def __init__(self, name):

self.name = name

self.gun = none

def fire(self):

if self.gun is none:

print("沒有槍,不敢上")

return

print("衝啊...{}".format(self.name))

self.gun.add_bullet(30)

self.gun.shoot()

ak47 = gun('ak47')

soldier = soldier("zaygee")

soldier.gun = ak47 # 把槍分配給士兵

soldier.fire()

-------------------------

#衝啊...zaygee

#ak47剩餘子彈29

2.繼承與多型應用例項

需求:1.在 dog 類中封裝方法 game

普通狗只是簡單的玩耍

2.定義 xiaotiandog 繼承自 dog,並且重寫 game 方法

哮天犬需要在天上玩耍

3.定義 person 類,並且封裝乙個 和狗玩 的方法

在方法內部,直接讓 狗物件 呼叫 game 方法

class dog:

def __init__(self, name):

self.name = name

def game(self):

print("{}在街上溜達".format(self.name))

class xiaotiandog(dog):

def game(self):

print("{}在天上飛".format(self.name))

class person:

def __init__(self, name):

self.name = name

def play_with_dog(self, dog):

print("{}和{}在快樂的玩耍".format(self.name, dog.name))

dog.game()

wangcai = xiaotiandog("哮天犬") # 建立乙個狗物件

zaygee = person("zaygee") # 建立乙個人物件

zaygee.play_with_dog(wangcai) # 人遛狗

--------------------------

#zaygee和哮天犬在快樂的玩耍

#哮天犬在天上飛

3.私有屬性&私有方法

class man:

def __init__(self, name):

self.name = name

self.__age = 18

def __secret(self):

return "我的年齡是{}".format(self.__age)

zaygee = man("zaygee")

print(zaygee.name)

# 訪問私有屬性:物件名._類名.__私有屬性

print(zaygee._man__age)

# 訪問私有方法(無法直接呼叫):物件名._類名.__私有方法

print(zaygee._man__secret())

--------------------------

#zaygee

#18#我的年齡是18

python之物件導向

python中一切皆物件 class 定義的類屬於類物件 obj1 屬於例項物件 在程式執行時,類同樣會載入到記憶體,類物件在記憶體中只有乙份,使用乙個類可以建立出很多例項物件 除了封裝例項的屬性和方法外,類物件還可以擁有自己的屬性和方法 類屬性和例項屬性 類屬性就是給類物件中定義屬性,通常用來記錄...

python之物件導向

物件導向介紹 一 物件導向和面向過程 面向過程 核心過程二字,過程即解決問題的步驟,就是先幹什麼後幹什麼 基於該思想寫程式就好比在這是一條流水線,是一種機械式的思維方式 優點 複雜的過程流程化 缺點 擴充套件性差 物件導向 核心是物件二字,物件指特徵與技能的結合體 基於該思想編寫程式就好比在創造乙個...

Python之物件導向 物件導向基礎

一 面向過程 物件導向對比 1 面向過程 根據業務邏輯從上到下寫壘 2 函式式思想 將某功能 封裝到函式中,日後便無需重複編寫,僅呼叫函式即可 3 物件導向 對函式進行分類和封裝 1 2 3一步一步抽象,函式式是走向物件導向的中間步驟 函式式的應用場景 各個函式之間是獨立且無共用的資料 物件導向程式...