天天看點

Python--day7--面向對象程式設計進階

介紹

學習記錄。。。。

目錄:

面向對象進階文法部分

字段

方法

屬性

經典類 新式類類的特殊成員反射

普通字段

靜态字段

普通方法

類方法

靜态方法

普通屬性

私有屬性

普通字段    屬于對象, 執行個體變量,存在每個執行個體裡面,進行執行個體的時候,開辟一個執行個體對象,

靜态字段    屬于類,類變量, 記憶體中存在類裡面,沒執行個體化,也存在。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<code>class</code> <code>Animal:</code>

<code>    </code><code>def</code> <code>__init__(</code><code>self</code><code>,name):</code>

<code>        </code><code>self</code><code>.name</code><code>=</code><code>name</code>

<code>    </code><code>hobbie </code><code>=</code> <code>'meat'</code>

<code>    </code><code>@</code><code>classmethod</code> <code>##類方法,不能通路執行個體變量</code>

<code>    </code><code>def</code> <code>talk(</code><code>self</code><code>):</code>

<code>        </code><code>print</code><code>(</code><code>"{}  is   talking"</code><code>.</code><code>format</code><code>(</code><code>self</code><code>.hobbie))</code>

<code>    </code><code>@</code><code>staticmethod</code>  <code>##靜态方法,不能通路類變量 和執行個體變量,大多情況不用,類的工具箱</code>

<code>    </code><code>def</code> <code>walk():</code>

<code>        </code><code>print</code><code>(</code><code>" is   talking"</code><code>)</code>

<code>    </code><code>@</code><code>property</code>   <code>##屬性,下面就不是方法了,變成了一個屬性,但是依然可以通路執行個體和類變量</code>

<code>    </code><code>def</code>  <code>habit(</code><code>self</code><code>):</code>

<code>        </code><code>print</code><code>(</code><code>"{}  habit  is  xxoo"</code><code>.</code><code>format</code><code>(</code><code>self</code><code>.name))</code>

<code>d </code><code>=</code> <code>Animal(</code><code>"Hequan"</code><code>)</code>

<code>Animal.talk()</code>

<code>d.talk()</code>

<code>d.walk()</code>

<code>d.habit</code>

<code>meat  </code><code>is</code>   <code>talking</code>

<code> </code><code>is</code>   <code>talking</code>

<code>Hequan  habit  </code><code>is</code>  <code>xxoo</code>

私有屬性 __

self.__num=num

經典類: 深度有限

新式類:廣度優先

類的特殊成員

__doc__         列印注釋

__module__   表示目前操作的對象在那個子產品

__class__       表示目前操作的對象的類是什麼

__init__          構造方法,通過類建立對象時,自動觸發執行

__del__          析構方法,當對象在記憶體中被釋放時,自動觸發執行。執行完成後,統一銷毀。

__call__          對象後面加括号,觸發執行 

__dict__         檢視類或對象中的所有成員、

__new__ \ __metaclass__    類的生成 調用 順序依次是 __new__ --&gt; __call__ --&gt; __init__

反射

通過字元串映射或修改程式運作時的狀态、屬性、方法

hasattr

getattr

setattr

delattr

if __name__=="__main__":

    server = WebServer('localhost',3306)

    if   hasattr(server,sys.argv[1]):              

        func = getattr(server,sys.argv[1])     ##擷取執行後面加的值  如 start

        func()

本文轉自 295631788 51CTO部落格,原文連結:http://blog.51cto.com/hequan/1886936,如需轉載請自行聯系原作者