創建類
類(Class): 用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。對象是類的實例。 使用class語句來創建一個新類,class之后為類的名稱並以冒號結尾,如下實例:
class ClassName: '類的幫助信息' #類文檔字符串 class_suite #類體
下面代碼就創建了一個名為Employee的類.
class Employee: # '所有員工的基類' empCount = 0 def __init__(self, name, salary): self.name = name self.salary = salary Employee.empCount += 1 def displayCount(self): print "Total Employee %d" % Employee.empCount def displayEmployee(self): print "Name : ", self.name, ", Salary: ", self.salary
如下代碼創建Employee的實例。
# "創建 Employee 類的第一個對象" emp1 = Employee("Zara", 2000) # "創建 Employee 類的第二個對象" emp2 = Employee("Manni", 5000)
訪問屬性
可以使用點(.)來訪問對象的屬性。使用如下類的名稱訪問類變量:
# 定義類 class Employee: # '所有員工的基類' empCount = 0 def __init__(self, name, salary): self.name = name self.salary = salary Employee.empCount += 1 def displayCount(self): print "Total Employee %d" % Employee.empCount def displayEmployee(self): print "Name : ", self.name, ", Salary: ", self.salary # "創建 Employee 類的第一個對象" emp1 = Employee("Zara", 2000) # "創建 Employee 類的第二個對象" emp2 = Employee("Manni", 5000) # 訪問類成員 emp1.displayEmployee() emp2.displayEmployee()
我們也可以對類的屬性進行修改,增加,刪除。
emp1.age = 7 # 添加一個 'age' 屬性 emp1.age = 8 # 修改 'age' 屬性 del emp1.age # 刪除 'age' 屬性
類的繼承
面向對象的編程帶來的主要好處之一是代碼的重用,實現這種重用的方法之一是通過繼承機制。繼承完全可以理解成類之間的類型和子類型關系。
繼承語法為 class 派生類名(基類名)://... 基類名寫作括號里,基本類是在類定義的時候,在元組之中指明的。
派生類的聲明,與他們的父類類似,繼承的基類列表跟在類名之后,如下所示:
class SubClassName (ParentClass1[, ParentClass2, ...]): 'Optional class documentation string' class_suite
如下繼承的例子。
class Parent: # 定義父類 parentAttr = 100 def __init__(self): print "調用父類構造函數" def parentMethod(self): print '調用父類方法' def setAttr(self, attr): Parent.parentAttr = attr def getAttr(self): print "父類屬性 :", Parent.parentAttr class Child(Parent): # 定義子類 def __init__(self): print "調用子類構造方法" def childMethod(self): print '調用子類方法 child method' c = Child() # 實例化子類 c.childMethod() # 調用子類的方法 c.parentMethod() # 調用父類方法 c.setAttr(200) # 再次調用父類的方法 c.getAttr() # 再次調用父類的方法
方法重寫
如果你的父類方法的功能不能滿足你的需求,你可以在子類重寫你父類的方法:
class Parent: # 定義父類 def myMethod(self): print '調用父類方法' class Child(Parent): # 定義子類 def myMethod(self): print '調用子類方法' c = Child() # 子類實例 c.myMethod() # 子類調用重寫方法