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 \\靜態方法調用不會傳參數