python 模擬鍵盤輸入_Python版“按鍵精靈”實現機房模式的批量切換
技術標籤:python
面向物件1
1、類的定義:
Python使用class關鍵字來定義類,其語法格式如下:
class:類名
類體
其中,類名的首字母一般需要大寫,具體示例如下:
class Student:
def say(self,name): #例項方法
self.name = name #例項屬性
print (‘我是’,self.name)
其中,例項方法與前面學習的函式格式類似,區別在於類的所有例項方法都必須至少有一個名為self的引數,並且必須是方法的第一個形參(如果有多個形參),self引數代表將來要建立的物件本身。另外,self.name稱為例項屬性,在類的例項方法中訪問例項屬性時需要以self為字首。
2、物件的建立
·在Python中,有兩種物件:類物件與例項物件。類物件只有一個,而實力物件可以有多個。
·類物件是在執行class語句時建立的,如例所示。
class Student:
def say(self,name): #例項方法
self.name = name #例項屬性
print (‘我是’,self。name)
print (‘類物件生成’)
print (type(Student))
在例中,Python執行class語句時建立一個類物件和一個變數(名稱就是類名稱),變數引用類物件。通過type()函式可以測試物件的型別。
在定義類時,還可以定義類屬性,如例所示。
class Student:
school = ‘扣丁學堂’ #類屬性
def say(self,name): #例項方法
self.name = name #例項屬性
print (‘我是’,self.name)
print (Student。school)
3、構造方法
Python中構造方法一般用來為例項屬性設定初值或進行其他必要的初始化操作,在建立例項物件時被自動呼叫和執行,如例所示。
class Student:
def init(self): #構造方法
print(‘呼叫構造方法’)
self.school = ‘千鋒教育’
def say(self):
print(‘學校:’,self.school)
sl.say()
Python中構造方法一般用來為例項屬性設定初值或進行其他必要的初始化操作,在建立例項物件時被自動呼叫和執行,如例所示。
class Student:
def init(self,myschool = ‘千鋒教育’): #構造方法
self.school = myschool
def say(self):
print(‘學校:’,self.school)
sl = Student()
sl.say()
s2 = Student(‘扣丁學堂’)
s2.say
4、析構方法
析構方法一般用來釋放物件佔用的資源,在刪除物件和收回物件空間時被自動呼叫和執行,如例所示。
class Student:
def init(self,myName):
self.name = myName
print(‘初始化’,self.name)
def del(self):
print(‘釋放物件佔用資源’,self.name)
s1 = Student(‘小千’)
s2 = Student(‘小峰’)
del s2
print (‘程式結束’)
在例中,第5行定義一個析構方法,該方法名稱(del)是固定不變的,如果使用者沒有定義它,Python將提供一個預設的析構方法。第9行使用del語句刪除一個物件,此時會自動呼叫析構方法。當程式結束時,Python直譯器會自動檢測當前是否存在未釋放的物件,如果存在,則自動使用del語句釋放其佔用的記憶體,如本例中的s1物件。
5、類方法
類方法是類所擁有的方法,通過修飾器@classmethod在類中定義,其語法格式如下:
class 類名:
@classmethod
def 類方法名(cls)
方法體
其中,cls表示類本身,通過它可以訪問類的相關屬性,但不可以訪問例項屬性,如例所示。
class Student:
num = 0
def init(self,myName):
Student.num +=1
self.name = myName
@classmethod
def count(cls):
print(‘學生個數:’,cls.num)
Student.count()
s1 = Student(‘小千’)
s1.count()
s2 = Student(‘小峰’)
Student.count()
6、靜態方法
類方法可以通過類名或例項物件名呼叫,靜態方法也可以通過兩者呼叫,其語法格式如下:
class 類名:
@ststicmethod
def靜態方法():
函式體
其中,@staticmethod為裝飾器,引數列表中可以沒有引數。靜態方法可以訪問類屬性,但不可以訪問例項屬性,如例所示。
class Student:
num = 0
sef init(self,myName):
Student.num +=1
self.name = myName
@staticmethod
def count():
print(‘學生個數:’,Student.num)
Student.count()
s1 = Student(‘小千’)
s1.count()
s2 = Student(‘小峰’)
Student.count()