python中的對象

黄舟
發布: 2017-01-19 17:16:31
原創
1639 人瀏覽過

對象:程式中使用的所有值都是對象,對象由內部屬性和方法組成這些方法會執行與資料相關的各種操作,前面操作列表類型資料時我們已經用過了方法:

data = [37,34];  
data.insert(1,25);   
data.append(23)  
print(data);
登入後複製

輸出結果:
37,25,34,23

dir()函數可以列出物件上可用的方法是進行互動式體驗的工具

dir(data)
登入後複製

輸出結果: 
['__add__', '__class__', '__contains__' , ......'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort' ]

在使用dir()函數查看物件的方法時會發現有很多以下劃線開始和結束的特殊的方法這些方法用於實現各種運算方式;
例如:

data = data +[3,4,50];  
print(data);
登入後複製

python中的+運算子實際上是執行瞭如下操作:

data.__add__([3,4,5])
登入後複製

註:兩個物件是否能進行加法運算首先要看相應的物件是否存在__add__()方法,如果有即使這個物件從數學上不可加我們都可以用加法的形式來表達其所定義的操作,因此可以得出結論:python中類似於__add__這樣的魔術方法一般定義了其不同的行為__add__相對應的行為就是+運算或連接 
 在物件導向程式設計中class objName class:定義物件的類別objName:類別名稱

class Stack(object):  
    def __init__(self): #__init__ 构造器,当一个实例被创建的时候 调用的初始化方法  
        self.stack = [];  
    def push(self,object):  
        self.stack.append(object);  
    def pop(self):  
        return self.stack.pop();  
    def length(self):  
        return  len(self.stack);
登入後複製

在定義Stack類別時語法class Stack(object) 將Stack宣告為一個object 圓括號是python指定繼承的方式因此Stack類別繼承自object object是所有python類型中的根類型 
類別中使用def語法定義了方法每個方法中的第一個參數self 總是指向物件自身 
self變數:涉及物件的所有操作必須引用self變數
如何使用Stack呢?

s = Stack();   
s.push("Dave");  
s.push([3,4,5,6]);  
s.push(32);  
x = s.pop();
登入後複製

輸出結果 
32

y = s.pop();
登入後複製

輸出結果:
[3, 4, 5, 6]
append()方法:此方法在python中的列表一章節中有過介紹,用於在列表的末尾追加一個元素
pop()方法:用於從列表末尾刪除一個元素並返回該元素 
len() 函數:返回列表中元素的個數
Stack類別實際上是創建了一個全新的物件用於實現堆疊但是該棧與內建的列表對象幾乎完全相同因此我們可以直接繼承list 然後添加額外的方法即可

class Stack(list):  
    def push(self,object):  
        self.append(object);
登入後複製

當繼承列表對象時,列表對象的方法Stack對象可直接進行使用 

s = Stack();  
s.push(66);   
s.push(65);   
s.push(64);   
s.push(63);
登入後複製

輸出結果:
[66, 65, 64, 63]

s.reverse();#此方法 用于反转列表中元素的顺序
登入後複製

輸出結果:
[63, 64, 65, 66]
在類別中如何建立靜態方法?
通常類別中定義的所有方法只使用與該類別的實例(創建的物件) 但是也可以定義靜態方法(可以像函數一樣呼叫)

class MyObject(object):  
    @staticmethod  
    def myCheck():  
        return 'ok';  
result = MyObject.myCheck();  
print(result);
登入後複製

輸出結果:
ok
@staticmethod 是一個裝飾器(decorator )實際上就是一個函數當我們在執行myCheck函數之前裝飾器的staticmethod 函數先執行將myCheck方法定義為了靜態方法
總結:
1,dir()方法:可查看物件所有的方法
2,魔術方法:以雙下劃線開始結束的方法該類別方法定義了不同的行為如:__add__()方法定義了+運算
3,python中定義類別的方法以及如何繼承物件如: class MyObject(object)

4,@ staticmethod: 裝飾器的使用:將一個方法定義為靜態方法 

以上就是python中的物件的內容,更多相關內容請關注PHP中文網(www.php.cn)!


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!