1. 程式人生 > >2.7 面向物件介紹 2.8 類的屬性 2.9 類的方法

2.7 面向物件介紹 2.8 類的屬性 2.9 類的方法

2.7 面向物件介紹

面向物件是程式設計的一種方法

數值就是數值物件,字串就是字串物件等等

面向物件 C++,java,python等

面向過程 C ,shell等

類和物件:這是面向物件中的兩個重要概念

類:是對事物的抽象,比如人類、球類……

物件:是類的一個例項,比如足球、籃球……

例項說明

球類可以對球的特徵和行為進行抽象,然後可以例項化一個真實的球實體出來

面向物件的主要思想

封裝

繼承

多型

這種思想方便解決較為複雜的專案,且維護起來比較容易

類定義

類把需要的變數和函式組合在一起,這種包含被稱為封裝

class A(object):

類的結構:

class 類名:

成員變數-屬性 成員函式-方法

>>> class People(object):
...     name = 'zx'
		def think(self):  \\定義的函式必須有self
			print 'thinking'
... 
>>> a = People()   \\例項化
>>> print people
<__main__.People object at 0x7fb9e3403c90>
>>> a.think()  \\呼叫think方法
thinking

2.8 類的屬性

類是由屬性和方法組成的,屬性可以叫做成員屬性,方法可以叫做成員方法

class People(object):
	name = 'zx'  \\屬性
	def think(self):  \\方法
		print 'thinking'

物件的建立

建立物件的過程曾稱之為例項化;當一個物件被建立後,包含三個方面的特性:物件控制代碼,屬性和方法。

控制代碼用於區分不同的物件

物件的屬性和方法與類中的成員變數和成員函式對應

oji=MyClass() \建立類的一個例項(物件)通過物件來呼叫方法和屬性

類的屬性

類的屬性按使用範圍分為公有屬性和私有屬性,類的屬性範圍取決於屬性的名稱。

公有屬性:在類中和類外都能呼叫的屬性

私有屬性:不能在類外以及被類以外的函式呼叫;定義方式, 已“__”雙下劃線開始的成員變數就是私有屬性;可以通過instance.__classname__attribute方式訪問

內建屬性:有系統在定義類時預設新增的,右前後雙下劃線構成, _dic_, _module_

class ClassA(object):
	pub = 'pub'
	__pri = 'pri'
	def show(self):
		print self.pub
		print self.__pri
		
classa = ClassA
classa.pub = 'newpub' \\可以在外部修改共有屬性

2.9 類的方法

方法的定義和函式一樣,但是需要self作為第一個引數

類的方法有:公有方法、私有方法、類方法和靜態方法。

類方法:被classmethod()函式處理過的函式,能被類所呼叫,也能被物件所呼叫(是繼承的關係)

靜態方法:相當於“全域性函式”,可以被類直接呼叫,可以被所有例項化物件共享,通過staticmethod()定義,注意靜態方法沒有self引數

class ClassA(object):
	pub = 'pub'
	__pri = 'pri'
	def show(self): \\公有方法
		print self.pub
		print self.__pri
	
	def new(self):
		self.think()  \\呼叫公有方法
	
	def __mypri(self): \\私有方法,不能在外部呼叫
		pass
classa = ClassA

類方法classmethod()

class ClassA(object):
	pub = 'pub'
	__pri = 'pri'
	def show(self): \\公有方法
		print self.pub
		print self.__pri
	test = classmethod(show)

classa = ClassA()
ClassA.test  \\直接呼叫show方法

靜態方法

class ClassA(object):
	pub = 'pub'
	__pri = 'pri'
	def show(): 
		print self.pub
		print self.__pri
	test = staticmethod(show)

classa = ClassA()
classa.test \\靜態方法呼叫不會傳引數