Python基礎 Python物件導向 1

2021-07-04 18:47:21 字數 1666 閱讀 6089

python中的oop其實就是在已連線命名空間物件內尋找屬性而已。

類名大寫!盡量

類內部的方法,通常新增乙個單一下劃線的字首。

class語句一般形式:

class (superclass,...):

data = value

def method(self,...):

self.member = value

方法呼叫

instance.method(args... ...)

會被自動翻譯為一下形式的類方法函式呼叫

class.method(instance,args... ...)

這兩種呼叫形式在python中都有效。

如果要保證子類的建構函式也會執行超類構造時的邏輯,一般都必須通過類明確呼叫超類的__init__方法:

class super:

def __init__(self,x):

...default code...

class sub(super):

def __init__(self,x,y):

super.__init__(self,x)

...custom code ...

如果沒有這樣的呼叫,子類會完全取代超類的建構函式。

可以分別使用特殊的類語法來實現/定義抽象基類:

python3.0

from abc import abcmeta,abstractmethod

class super(metaclass=abcmeta):

@abstractmethod

def method(self,...):

pass

python2.6:

class super:

__metaclass__=abcmeta

@abstractmethod

def method(self,...):

pass

不管哪種方法,效果都是相同的——我們不能產生乙個例項,除非在類樹的較低層級定義了該方法。

因為python中沒有型別宣告,所以python中的多型是基於物件介面的

如果通過引數列表進行過載方法,如:

class c:

def method(self, x):

...def method(self, x, y, z):

...

這樣的**是會執行的,但是,只有最後乙個定義才會起作用(就像x=1,然後x=2,結果x將是2)

class語句內開頭有兩個下劃線,但結尾沒有兩個下劃線的變數名,會自動擴張,從而包含了所在類的名稱。

例如,像spam類內__x這樣的變數名會自動程式設計_spam__x; 原始的變數名會在頭部加入乙個下劃線,然後是所在類名稱。

可以避免多重繼承時可能導致的命名衝突。用的不多。

在class語句內,首行括號內可以列出乙個以上的類。當這麼做時,就是在使用所謂的多重繼承:類和其實例繼承了列出的所有超類的變數名。

python 面 python面精彩試題100

所有的變數都可以理解是存中乙個物件的 引用 或者,也可以看似c中 void 的感覺。這裡記住的是型別是屬於物件的,而不是變數。而物件有兩種 可更改 mutable 與 不可更改 immutable 物件。在 python 中,strings,tuples,和numbers 是不可更改的物件,而 li...

python基礎15 面像物件的程式設計

物件導向的程式設計 一 物件導向的程式設計簡介 1 物件導向程式設計的由來。我們之前雖然學習過了面向過程的程式,它的核心是面向過程,一步一步的設計好了的流程,雖然極大的降低了程式的複雜度,但是乙個設計 好了的流程只能滿足乙個程式後期的可擴充套件性差,所以為了解決面向過程的程式可擴充套件性差的缺點,產...

python面試經典題 Python經典面試題

1 邏輯運算子的運算 and or not 優先順序,not and or print not 2 1 and 3 4 or 4 5 and 2 1 and 9 8 or 7 6 f x or y x true,則返回x print 1 or 2 1 print 3 or 2 3 print 0 o...