#物件導向
#class 類名:
# 類體
#類名首字母大寫
#類物件與例項物件
#類物件
class student:
school='鹿晗最棒' #類屬性
def say(self,name):#例項方法
self.name=name#例項屬性
print('真的',self.name)
print(student.school)
#例項物件
class student:
school='鹿晗' #類屬性
def say(self,name):#例項方法
self.name=name #例項屬性
print('我是',self.name)
s1=student() #建立例項物件
s1.say('鹿晗最棒')
print(s1.school,s1.name)
#我是鹿晗最棒 鹿晗鹿晗最棒
#類屬性和例項屬性相同時,通過例項物件訪問例項屬性,類物件訪問類屬性
class student:
school='鹿晗' #類屬性
def say(self,school):#例項方法
self.school=school #例項屬性
print('我是',self.school)
s1=student() #建立例項物件
s1.say('鹿晗最棒')
print(student.school,s1.school)
#我是鹿晗最棒 鹿晗鹿晗最棒
#構造方法
def __init__(self):
print('呼叫構造方法')
self.school='千鋒教育'
def say(self):
print('學校:',self.school)
#析構方法
def __del__(self):
print('釋放物件占用資源',self.school)
del s1
#類方法,可以訪問類的相關屬性,不可以訪問例項屬性
'''class 類名:
@classmethod
def 類方法名(cls)#cls表示類本身
方法體'''
class student:
num=0
def __init__(self,name):
student.num+=1
self.name=name
@classmethod #類方法
def count(cls):
print('學生個數:',cls.num)
student.count()
s1=student('小千')
s1.count()
#學生個數:0 學生個數:1
#靜態方法
'''class 類名:
@staticmethod
def 靜態方法名():
函式體'''
#運算子過載
class my:
def __init__(self,r=0,i=0):
self.r=r
self.i=i
def __add__(self,other):
return my(self.r + other.r,self.i + other.i)
def __eq__(self,other):
return self.r==other.r and self.i == other.i
def __str__(self):
if self.i < 0:
return '('+str(self.r)+str(self.i)+'j)'
else:
return '('+str(self.r)+'+'+str(self.i)+'j)'
c1=my(6,-4)
c2=my(3,2)
(c1+c2).show()
print(c1==c2)
print(c1,str(c2))
#索引或切片過載
class data:
def __init__(self,list):
self.data=list[:]
def __getitem__(self,item):
return self.data[item]
def __setitem__(self,key,value):#過載索引與切片複製
self.data[key]=value
def __contains__(self,item):
return item in self.data
data=data([1,2,3,4])
for i in data :
print(i,end=' ')#1 2 3 4
data[1]='qinfeng'
data[2:]='kouding','chengxu'
print(data.data)#[1,'qianfeng','kouding','chengxu']
print(0 in data)#false
#封裝#類外訪問私有屬性
class student:
def __init__(self,myname,myscore=0):
self.name=myname
self.setscore(myscore)
def setscore(self,myscore):
if 0#單一繼承
'''class 基類名(object):
類體class 派生類名(基類名):
類體'''
#派生類的構造方法名與基類的構造方法名相同
class person(object):
def __init__(self,name):
class student(person):
def __init__(self,name):
#如果派生類的建構函式中需要新增引數,則可以在派生類的構造方法中呼叫基類的構造方法
def __init__(self,name,score):
super(student,self).__init__(name)#或person.__init__(self,name)
#私有屬性不能被繼承
class sshsh(student,person)
def __init__(self,name,score,id,salary)
#同名屬性,會顯示最後呼叫的
Python快樂程式設計基礎入門,第十三章異常
異常 try except try a float input 請輸入被除數 b float input 請輸入除數 print a,b,結果為 a b print 運算結束 except zerodivisionerror print 除數不能為0 print 程式結束 一旦觸發異常try後語句不...
Python快樂程式設計基礎入門,第十二章檔案
檔案 開啟檔案 open file mode r file被開啟的檔名,mode檔案開啟模式,預設為唯讀模式 讀文字檔案 檔案物件.read size 4 讀4個字元 檔案物件.readlines 讀取所有行的內容 readline讀取一行 in關鍵字讀取檔案 with open text.txt ...
python快樂程式設計基礎入門,第七章函式(上)
函式 上 def output print yyy output 想要檢視乙個函式的文件字串,則可以通過 doc sum2.doc 將兩個實參位置調換發生錯誤 def indn school qianfeng name fdd print 姓名 s t學校 s name,school 錯誤,順序不對...