1.基礎知識
①定義類,使用關鍵字class,形式如下:
#使用關鍵字class來定義類,格式如下
class myClass:
def myFunction(self):
print('This is my first class!',end='\n')
def myFunction1(self):
print('Hello, my class!',end='\n')
②可以通過聲明類對象來調用類中的公有方法
#聲明類對象
my=myClass()
#調用類函數
my.myFunction()
my.myFunction1()
#判斷my是否爲類對象,返回True或者False
print(isinstance(my,myClass),end='\n')
輸出結果如下:
This is my first class!
Hello, my class!
True
③pass佔位,在沒有對類進行功能劃分時使用
class myClass1:
pass
④self(可以通過初始化修改self變量名)參數,是類方法必須帶有的參數,必須放在首參數位置
class myClass2:
money=100 #類屬性(類作用域中的全局變量)
#data=0
def __init__(myclass,a): #類的構造函數,初始化類對象時調用
myclass.a=a
def myFunction3(myclass,b):
print(myclass.a+b,end=' ')
print('money:',myclass.money,end='\n')
def __call__(myclass, c):
print(myclass.a*c,end='\n')
def myFunction4(myclass,d):
myclass.data=d
print(myclass.money,myclass.data,end='\n')
#初始化類對象
my1=myClass2(5)
#調用類函數
my1.myFunction3(5)
#調用__call__()函數
my1(5)
#修改類中屬性
my1.money=1000
my1.myFunction3(6)
#增加類屬性
my1.name="myClass2"
print(my1.name,end='\n')
#增加對象的成員
my1.myFunction4('hello')
輸出結果如下:
10 money: 100
25
11 money: 1000
myClass2
1000 hello
2.方法指與特定實例綁定的函數,通過對象調用方法時,對象本真作爲第一個參數傳遞過去,普通函數不具備這個特性
my2=myClass1()
def test(self,m):
self.value=m
my2.test=test
print(my2.test,end='\n')
print(my2.test(my2,2),my2.value,end='\n')
輸出結果如下:
<function test at 0x000001E57E1AC168>
None 2
3.在IDE中,通過在對象或類名後加’.‘可以查看其所有公有成員;加’._'會列出該對象或類的所有成員,包括私有成員;
私有屬性:使用__兩個下劃線(中間無空組合)開頭則爲私有屬性
class myClass4:
def __init__(self):
self.m=10
#m=10 #公有屬性
_m=100 #保護屬性
__m__=1000 #系統定義的特殊成員
__m=10000 #類中私有成員,只能內部訪問或者在外部使用特殊函數
def myFunction(self): #類方法
return self.__m
#print(self.__m,end='\n')
#print(self._m,end='\n')
def staticFunction(): #靜態方法
print(myClass4.m)
def __myFuction(self):
print(self.myFunction()) #私有函數
def myFunction5(self):
return self.__myFuction() #內部函數訪問私有函數
調用類:
my3=myClass4()
print('打印公有屬性',my3.m,end='\n')
print('打印私有成員(外部訪問)',my3._myClass4__m,end='\n')
print('使用內部函數訪問私有成員',my3.myFunction(),end='\n')
print('通過內部訪問私有函數',my3.myFunction5(),end='\n')
print('通過類名訪問方法',myClass4.myFunction(my3),end='\n')
輸出結果:
打印公有屬性 10
打印私有成員(外部訪問) 10000
使用內部函數訪問私有成員 10000
10000
通過內部訪問私有函數 None
通過類名訪問方法 10000
學習筆記:
1關於類的定義和使用,使用關鍵字class(空格)(類名):的格式定義,類可以有初始化函數__init__()也可由不使用;
2.可以通過isinstance()函數判斷對象實例化關係;
3.通過pass佔位符可以使得調用沒有方法的類也可以被實例化:
#pass佔位,在沒有對類進行功能劃分是使用
class myClass1:
pass
myc=myClass1()
print(myc,end='\n')
輸出結果:
<__main__.myClass1 object at 0x000002BE48EBA0C8>
4.對於類中的方法的首個參函名在初始化使用時可以被修改:
def __init__(myclass,a): #類的構造函數,初始化類對象時調用
myclass.a=a
5.方法指與特定實例綁定的函數,通過對象調用方法時,對象本真作爲第一個參數傳遞過去,普通函數不具備這個特性;
6.在IDE中,通過在對象或類名後加’.‘可以查看其所有公有成員;加’._'會列出該對象或類的所有成員,包括私有成員。私有屬性:使用__兩個下劃線(中間無空組合)開頭則爲私有屬性。
如果有不會的,可以留言,大家一起學習交流!