物件導向介紹
世界萬物,皆可分類
世間萬物,皆為物件
只要是物件,就肯定屬於某種品類
只要是物件,就肯定有屬性
例子:人:思考,說話,吃喝拉撒。
特性:
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,屬於例項變數
(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 返回...