Python快樂程式設計基礎入門,第十十一章物件導向

2021-10-25 07:35:07 字數 3302 閱讀 8289

#物件導向

#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 錯誤,順序不對...