Python 類的定義與使用

2019-9-6Python類的定義與使用

  • 類:描述具有相同屬性和方法的對象的集合
  • 類變量:在整個實例化的對象中是公用的,類變量定義在類中且在函數體之外,類變量通常不作爲實例變量使用
  • 方法重寫:如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的
  • 覆蓋(override),也稱爲方法的重寫
  • 局部變量:定義在方法中的變量,只作用於當前實例的類
  • 實例變量:在類的聲明中,屬性是用變量來表示的,是在類聲明的內部但是在類的其他成員方法之外聲明的
  • 繼承:即一個派生類繼承基類的字段和方法
  • 實例化:創建一個類的實例,類的具體對象
  • 對象:通過類定義的數據結構實例。對象包括兩個數據成員(類變量和實例變量)和方法

1、類的定義
語法:

class <類名稱>:
  ["文件字符串"] #類文檔字符串
<語句> #類體,由類成員、方法、數據屬性組成
class Car(object):  #定義一個類,派生自object類
  def infor(self): #定義成員方法
      print("This is a car")

2、構造方法

  • 類的構造方法或初始化方法,當創建了這個類的實例時就會調用該方法
  • 實例化對象時時可以傳入參數的,這些參數會自動傳入_ init _()方法中,可以通過重寫這個方法來定義對象的初始化操作
  • 定義構造方法時,self是必要的參數且爲第一個參數
  • 若在Python中定義類時沒有定義_init_()方法,則在實例化時系統會自動調用默認的構造方法(無參的_init_()方法)
  • 一個類中可以定義多個構造方法,但是實例化類時只會實例化最後的構造方法,即後面的構造方法會覆蓋前面的構造方法,並且需要根據最後一個構造方法的形式進行實例化(參數與最後一個構造方法的參數一致),因此一個類中最好只定義一個構造方法
  • 初始化實例包括:定義和初始化實例屬性或調用類的一些方法
    語法:
def_init_(self):
  <語句>
class Myclass:
   i=612
   def __init__(self,you):
      self.you=you
   def func(self,me):
      self.me=me
      return self.me+" like "+self.you
user=Myclass("lion") 
print("調用類的屬性:",user.i) 
print("調用類的方法:",user.func("monkey"))

調用類的屬性:612
調用類的方法:monkey like lion

分析這段代碼,一開始看着有點打腦殼,跟Java面向對象類的定義存在很多不一樣。在定義類中函數時,通常需要將函數的第一個參數定義成self,而self指向對象本身。下面一個例子

class Breakfast:
  def set_name(self,name):
    self.name=name
  def get_name(self):
    return self.name
a=Breakfast()
b=Breakfast()
a.set_name("milk")
b.set_name("bread")
print(a.get_name())
print(b.get_name())

milk
bread

對象a,b在分別調用set_name()和get_name()方法時,self分別指向了a,b,即對象自身。

3、內置類屬性
①_dict_:類的屬性(包含一個字典,由類的數據屬性組成)
②_doc_:類的文檔字符串
③_name_:類名
④_module_:類定義所在的模塊(類的全名稱是’_ main _.className’,如果類位於一個導入模塊mymod中,那麼className._module _等於mymod)
⑤_bases _:類的所有父類構成元素(包含了由父類組成的元組)

4、類的實例
①創建類實例

car = Car() #實例化對象
car.infor() #調用對象的成員方法
//這裏輸出:This is a car

②內置函數isinstance()
作用:測試一個對象是否爲某個類的實例

>>>isinstance(car,Car)
True

③內置函數type()
作用:查看對象類型

>>>type(car)
<class'_ _main_ _.Car'>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章