python類的簡單學習
class person: #建立乙個新類
pass #空白塊
p=person() #建立乙個物件/例項
print (p)
#類中包含方法,與函式的區別是有乙個額外的self變數
class person1:
def __init__(self,name):#__init__方法在類的乙個物件被建立時,馬上執行,可以對物件做一些初始化。名稱的開始和結尾都是雙下劃線
self.name=name;
def sayhello(self): #sayohello方法沒有任何引數,仍仍在函式定義時有self
print('hello,come on!%s',self.name)
p1=person1('hello')#類似於建構函式
p1.sayhello()
類與物件:有兩種型別的域:類的物件和物件的變數,根據是類還是物件擁有這個變數而區分。
類的變數由乙個類的所有物件(例項)共享使用,只有乙個類變數的拷貝,當某個物件對類的變數做了改動時,這個改動會反應到其他例項中。
物件的變數是由類的每個物件/例項擁有,每個物件有自己對這個域的拷貝,但不是共享的。
類的方法與普通的函式只有乙個特別的區別——它們必須有乙個額外的第乙個引數名稱, 按照慣例它的名稱是 self。
class
test
: def
prt(
self):
(self
(self
.__class__)t
= test()
t.prt()
以上例項執行結果為:
<__main__.test instance at 0x10d066878>從執行結果可以很明顯的看出,self 代表的是類的例項,代表當前物件的位址,而 self.class 則指向類。__main__.test
self 不是 python 關鍵字,我們把他換成 runoob 也是可以正常執行的:
class
test
: def
prt(
runoob):
(runoob
(runoob
.__class__)t
= test()
t.prt()
以上例項執行結果為:
<__main__.test instance at 0x10d066878>__main__.test
#類與物件
class person:
'''represents a person'''
population=0; #population屬於person類,是乙個類的變數
def __init__(self,name):#name變數屬於物件(使用self賦值),是物件的變數
self.name=name;
print('initializing %s'%self.name)
person.population+=1;
def __del__(self):#物件消失時呼叫,消逝後物件不再被使用,所占用的記憶體將返回給系統
print('%s says bye'%self.name)
person.population-=1;
if person.population==0:
print('i am the last one')
else:
print('there are still %d people left.'%person.population)
kalman=person('awiln')
swar=person('vlown')
#self.name根據每個物件指定,作為物件的變數
#只能使用self變數來參考同乙個同乙個物件的變數和方法,被稱為屬性參考。
#當物件不再被使用時,__def__方法執行,但是很難保證這個方法究竟什麼時候執行,要指明它的執行,使用del語句相當於析構函式。
繼承
#乙個子型別在任何需要父型別的場合可以被替換成父型別,即物件可以被視作父類的例項,這種現象被稱為多型現象。
class schoolmember:#基本類\超類
def __init__(self,name,age):
self.name=name
self.age=age
print('initialized schoolmember:%s'%self.name)
def tell(self):
print('name:%s age:%s'%(self.name,self.age))
class teacher(schoolmember):#繼承,匯出類\子類
"""represent a teacher"""
def __init__(self, name,age,salary):
schoolmember.__init__(self,name,age)#呼叫方法之前加上類名稱字首
self.salary = salary
print('initialized teacher:%s'%self.name)
def tell(self):
schoolmember.tell(self)
print('salary:%d'%self.salary)
class student(schoolmember):
"""docstring fos student"""
def __init__(self, name,age,marks):
schoolmember.__init__(self,name,age)
self.marks= marks
print('initialized student:%s'%self.name)
def tell(self):
schoolmember.tell(self)
print('marks:%d'%self.marks)
t=teacher('teacher wang',40,30000)
s=student('student li',22,75)
print
members=[t,s]
for members in members:
members.tell()
#這裡是多重繼承
file:讀取檔案
poen='''programming is fun
when the work is done
if you wanna make your work alse fun:
use python'''
f=open('poem.txt','w',1)#開啟乙個檔案,建立file物件,開啟後相關的方法才可以呼叫它進行讀寫
#第二個引數決定了開啟檔案的模式:r唯讀,指標放在檔案開頭;rb二進位制開啟,唯讀
#r+開啟檔案用於讀寫;rb+二進位制開啟乙個檔案用於讀寫 ...更多參考教程
#第三個引數buffering,設為0,就不會有記憶體;設為1,訪問檔案時會寄存行;設為大於1的整數,表明寄存區的緩衝大小;設為負值,緩衝大小為系統預設。
f.write(poen)
f.close
f=open('poem.txt')
while true:
line=f.readline()#讀取檔案每一行
if len(line)==0:
break
print (line)
f.close()
儲存
#pickle模組,儲存器
#可以在檔案中儲存任何python物件,又可以完整無缺的取出來:持久的儲存物件
import pickle as p #使用模組的一種方式
shoplistfile='shoplist.data'
shoplist=['a','b','c']
f=open(shoplistfile,'wb+') #wb+以二進位制格式開啟乙個檔案用於讀寫,若存在則覆蓋
p.dump(shoplist,f)#儲存:以寫模式開啟乙個file物件,呼叫儲存器模組的dump函式,把物件儲存到開啟的檔案中
f.close()
del shoplist
f=open(shoplistfile,'rb+')
storedlist=p.load(f)#使用pickle模組的load函式的返回來取回物件,取儲存
print (storedlist)
Python學習筆記 類與物件
基於python3版本的學習。生活中我們所說的類,是物以類聚的類,是分門別類的類,是多個類似事物組成的群體的統稱。而在python中我們所遇到的類 class 比如整數 字串 浮點數等,不同的資料型別就屬於不同的類。準確來說,它們的全名是整數類 字串類 浮點數類。每乙個類之下都包含無數相似的不同個例...
Python學習筆記 (類與物件)
1.類與物件 物件導向程式設計語言類 乙個模板,人類 是乙個抽象的,沒有實體的物件 eg 張三,李四 屬性 表示這類東西的特徵,眼睛,嘴巴,鼻子 方法 表示這類物體可以做的事情,eg 吃飯,睡覺,學習 2.定義類 使用class 3.python 的魔法方法 init self param1,par...
Python學習 初識類與物件
python中類和物件的概念 python中的函式和普通函式的對比 python類語法的初識 一 python中類和物件的概念 我們把一類相同的事物叫做類,其中用相同的屬性 其實就是變數 描述,裡面封裝了相同的方法。比如,汽車是乙個類,它包括 品牌等屬性。倘若要實現列印100種車的屬性的功能,那麼可...