python中的對象

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

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 裝飾器的使用 :將一個方法定義爲靜態方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章