Python程序設計之面向對象程序設計(1)

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中,通過在對象或類名後加’.‘可以查看其所有公有成員;加’._'會列出該對象或類的所有成員,包括私有成員。私有屬性:使用__兩個下劃線(中間無空組合)開頭則爲私有屬性。

如果有不會的,可以留言,大家一起學習交流!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章