python學習,day5 物件導向

2022-08-29 06:27:10 字數 3581 閱讀 2865

物件導向介紹

世界萬物,皆可分類

世間萬物,皆為物件

只要是物件,就肯定屬於某種品類

只要是物件,就肯定有屬性

例子:人:思考,說話,吃喝拉撒。

特性:

class類

乙個類及時對一類擁有相同屬性的抽象、藍圖、原型。在類中定義了這些物件的都具有的屬性(variables(data)),共同方法

object物件

乙個物件即是乙個類的例項化後例項,乙個類必須經過例項化後方可在程式中呼叫,乙個類可以例項化多個物件,每個物件亦可以有不同的屬性,就像人類是指所有人,每個人是指具體的物件,人與人之間有共性,亦有不同。

封裝在類中對資料的賦值,內部呼叫外部使用者是透明的,這使類變成了乙個膠囊或器官,裡面包含著累的資料和方法。

繼承乙個類可以派生出子類,在這個父類裡定義的屬性,方法自動被子類繼承

多型乙個介面,多種實現

語法:

屬性方法

建構函式

析構函式

在例項釋放、銷毀的釋藏執行的,通常用於做一些收尾工作,

私有方法,私有屬性 

類變數

類變數的用途,大家共用的屬性,節省開銷

class person:

cn = '中國'

def __init__(self,name,age,addr,cn = 'china')

self.name =name

self.cn =cn

p1 =person(name,age,addr)

例項變數

#

coding=utf-8

#author: ryan bi

class

dog: #定義類

def__init__

(self,name): #建構函式,在例項化時做一些初始化的工作

self.name =name

defbulk(self):

print('

%s is a dog

'%self.name)

d1= dog('a'

) #例項化(初始化乙個類,造了乙個物件)

d2 = dog('b'

)d3 = dog('c'

)d1.bulk()

d2.bulk()

d3.bulk()

下面模擬了乙個cs遊戲的**,看備註

#

coding=utf-8

#author: ryan bi

class

role:

n = 123 #

類變數 n_list = #

定義乙個類變數,列**式

name = '

我是類name

'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

def__del__(self): #

最後執行,析構函式,物件結束和消失或者刪除或者程式退出的時候執行。

print('

%s is deaded..

'%self.name)

def shot(self): #

類的方法,功能(動態屬性)

print('

shooting!!!!')

def__shot1(self): #

私有方法,不能直接呼叫

print('

shooting!!!!')

defgot_shot(self):

self.

__life_value -= 50

print('

%s:ah..,i got shot..

'%self.name)

defbuy_gun(self,gun_name):

print('

%s just bought %s

'%(self.name,gun_name))

def show_status(self): #

定義乙個函式,可以呼叫私有屬性

print('

name:%s weapon:%s life:%s:

'%(self.name,self.weapon,self.__life_value

))r1 = role('

alex

','police

','ak47

') #

生成乙個角色,把乙個類變成乙個具體物件的過程,叫例項化

r2 = role('

jack

','terrioist

','uzi

') #

生成乙個角色,把乙個類變成乙個具體物件的過程,叫例項化

r1.got_shot()

r1.buy_gun(

'uzi')

r1.name = 'bb'

#新增乙個例項變數,會覆蓋以前的

r1.bullet_prove = true #

新增了乙個之前沒有的例項變數,是可以新增的

#del r1.weapon #可以刪除例項變數

r1.n = '

改類變數'#

可以改r1的類變數(實際上是創造了乙個例項變數),但r2不改變

print('

r1:',r1.n,r1.name,r1.bullet_prove) #

n是類變數,是123,雖然類變數也有name,但是例項本身的name優先順序更高

print('

r2:',r2.n,r2.name) #

r2.n不變,因為前面只是改變了r1的n,屬於例項變數

print

(role.n)

role.n = '

abc'

print(r1.n,r2.n) #

r1.n,仍然是例項變數優先,但r2.n是改變的,因為沒有例項變數

from r1')

'from r2')

print(r2.n_list) #

n_list 共用記憶體位址,所以列表是改誰都全改

print(r2.money,r2.weapon) #

r1.weapon 已經刪除

#print(r1.__life_vaule) #私有屬性,不能直接呼叫,會報錯

print(r1.show_status()) #

私有屬性,只有定義才能看見

python學習日誌 day5

json和pickle模組主要用於序列化,有四個方法 dump dumps loads load 1.模組定義 用來從邏輯上組織python 本質上就是以.py結尾的python檔案 檔名test.py對應模組名 test 2.模組匯入方法 import module name import mod...

Python學習day5作業

從鍵盤上輸 入 個數,顯示它的絕對值 允許使 用abs num float input 請輸入乙個數字 print num if num 0else num 假設使用者名為admin,密碼為123abc,從控制台分別輸入使用者名稱和密碼,如果和已知使用者名稱和密碼都匹配上的話,則驗證成功,否則驗證失...

python學習筆記 day5

函式 返回值 描述 pow x,y x y 運算後的結果 sqrt x 返回 x 的平方根 abs x 返回數字的絕對值,如 abs 10 返回 10 fabs x 返回數字的絕對值,如 math.fabs 10 返回 10.0 ceil x 返回數字的上入整數,入 math.ceil 4.1 返回...