python學習之 python對象

關於python 對象的定義

class <類名>:
 <語句>

類的私有屬性和方法 :

類的私有屬性:
  __private_attrs  兩個下劃線開頭,聲明該屬性爲私有,不能在類地外部被使用或直接訪問。在類內部的方法中使用時 self.__private_attrs
類的方法
  在類地內部,使用def關鍵字能夠爲類定義一個方法,與通常函數定義不一樣,類方法必須包含參數self,且爲第一個參數
私有的類方法
  __private_method 兩個下劃線開頭,聲明該方法爲私有方法,不能在類地外部調用。在類的內部調用slef.__private_methodspython

類的專有方法:
__init__  構造函數,在生成對象時調用
__del__   析構函數,釋放對象時使用
__repr__ 打印,轉換
__setitem__按照索引賦值
__getitem__按照索引獲取值
__len__得到長度
__cmp__比較運算
__call__函數調用
__add__加運算
__sub__減運算
__mul__乘運算
__div__除運算
__mod__求餘運算
__pow__稱方編程

class people:
	'定義人類'
	#定義基本屬性
	name = ''
	age = 0
	#定義私有屬性
	__weight = 0
	#定義構造函數
	def __init__(self,n,a,w):
		self.name = n
		self.age = a
		self.__weight = w
	def speak(self):
		print("%s is speaking :I am %d years old and my weight is %d" %(self.name,self.age,self.__weight))
	def __del__(self):
		print("This is del")
p = people('Tom',10,30)
print(p.name) # Tom
p.speak() #Tom is speaking :I am 10 years old and my weight is 30

類的繼承

面向對象的編程帶來的主要好處之一是代碼的重用,實現這種重用的方法之一是經過繼承機制。繼承徹底能夠理解成類之間的類型和子類型關係。函數

須要注意的地方:繼承語法 class 派生類名(基類名)://... 基類名寫做括號裏,基本類是在類定義的時候,在元組之中指明的。ui

在python中繼承中的一些特色:spa

  • 1:在繼承中基類的構造(__init__()方法)不會被自動調用,它須要在其派生類的構造中親自專門調用。
  • 2:在調用基類的方法時,須要加上基類的類名前綴,且須要帶上self參數變量。區別於在類中調用普通函數時並不須要帶上self參數
  • 3:Python老是首先查找對應類型的方法,若是它不能在派生類中找到對應的方法,它纔開始到基類中逐個查找。(先在本類中查找調用的方法,找不到纔去基類中找)。

若是在繼承元組中列了一個以上的類,那麼它就被稱做"多重繼承" 。code

語法:對象

派生類的聲明,與他們的父類相似,繼承的基類列表跟在類名以後,以下所示:繼承

class SubClassName (ParentClass1[, ParentClass2, ...]):
   'Optional class documentation string'
   class_suite

關於構造函數:索引

一、若是子類中沒有定義 def __init__(),則會調用父類的構造函數。get

二、若是子類中定義了構造函數,則會自動覆蓋父類的構造函數。

三、若是想調用父類的構造函數,則須要加上 parent.__init__(self,***)。

關於方法的重寫:

class Parent:        # 定義父類
   def myMethod(self):
      print '調用父類方法'

class Child(Parent): # 定義子類
   def myMethod(self):
      print '調用子類方法'

c = Child()          # 子類實例
c.myMethod()         # 子類調用重寫方法
相關文章
相關標籤/搜索