class Employee: '全部員工的基類' empCount = 0 #empCount 變量是一個類變量,它的值將在這個類的全部實例之間共享。你能夠在內部類或外部類使用 Employee.empCount 訪問。 #類的初始方法,類的構造函數 #self 表明類的實例,self 在定義類的方法時是必須有的,雖然在調用時沒必要傳入相應的參數 #name salary 實例對象,訪問時須要self.name def __init__(self, name, salary): self.name = name self.salary = salary Employee.empCount += 1 #類的方法與普通的函數只有一個特別的區別——它們必須有一個額外的第一個參數名稱, 按照慣例它的名稱是 self。 def displayCount(self): print("Total Employee %d" % Employee.empCount) #訪問類對象 print("say:{0}{1}".format(self.name,self.salary)) #訪問實例對象 #建立類的實例 e=Employee("劉德華","酷斃了") #調用實例方法 e.displayCount() #第二個實例 ee=Employee("彭于晏","智商190") ee.displayCount() #屬性操做 e.age = 7 # 添加一個 'age' 屬性 e.age = 8 # 修改 'age' 屬性 del e.age # 刪除 'age' 屬性 print(hasattr(e, 'age')) # 若是存在 'age' 屬性返回 True。 print(setattr(e, 'age', 8)) # 添加屬性 'age' 值爲 8 print(getattr(e, 'age')) # 返回 'age' 屬性的值 print(delattr(e, 'age')) # 刪除屬性 'age' print ("類的文檔字符串Employee.__doc__:", Employee.__doc__) print ("類名Employee.__name__:", Employee.__name__) #類的全名是'__main__.className',若是類位於一個導入模塊mymod中,那麼className.__module__ 等於 mymod print ("類定義所在的模塊Employee.__module__:", Employee.__module__) print ("類的全部父類構成元素Employee.__bases__:", Employee.__bases__) print ("類的屬性Employee.__dict__:", Employee.__dict__)
class Point: def __init__( self, x=0, y=0): self.x = x self.y = y def __del__(self): class_name = self.__class__.__name__ print class_name, "銷燬" pt1 = Point() pt2 = pt1 pt3 = pt1 print id(pt1), id(pt2), id(pt3) # 打印對象的id del pt1 del pt2 del pt3
承語法 class 派生類名(基類名)://... 基類名寫在括號裏,基本類是在類定義的時候,在元組之中指明的。python
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 C(A, B): # 繼承類 A 和 Bcode
你可使用issubclass()或者isinstance()方法來檢測。orm
class Parent: # 定義父類 def myMethod(self): print '調用父類方法' class Child(Parent): # 定義子類 def myMethod(self): print '調用子類方法' c = Child() # 子類實例 c.myMethod() # 子類調用重寫方法
Python不容許實例化的類訪問私有數據,但你可使用 object._className__attrName 訪問屬性對象
單下劃線、雙下劃線、頭尾雙下劃線說明:繼承