學習Python的那些事兒 Day8 物件導向

2021-10-04 22:16:07 字數 2746 閱讀 9723

類(class):用來描述具有相同的屬性和方法的物件的集合。它定義了該集合中每個物件所共有的屬性和方法。物件是類的例項。

方法:類中定義的函式。

類變數:類變數在整個例項化的物件中是公用的。類變數定義在類中且在函式體之外。

資料成員:類變數 在整個例項化的物件中是公用的。類變數定義在勒種且在函式體之外。類變數通常不作為例項變數使用。

方法重寫:如果從父類整合的方法不能滿足子類的需求,可以對其進行改寫,整個過程叫做方法的覆蓋。

區域性變數:定義在方法中的變數,只作用於當前例項的類。

例項變數:在類的宣告中,屬性是用變數來標識的,這種變數就稱為例項變數,例項變數就是乙個用self修飾的變數。

繼承:即乙個派生類繼承基類的字段和方法。繼承也允許把乙個派生類的物件作為乙個基類物件對待。

例項化:建立乙個類的例項,類的具體物件。

物件:通過類定義的資料結構例項。物件包括兩個資料成員(類變數和例項變數)和方法。

class

classname:

1>..

.

類物件支援兩種操作:屬性引用和例項化

屬性引用使用和python中所有的屬性引用一樣的標準語法

類物件建立後,類命名空間中所有的命名都是有效屬性名。

class

myclass

:'''乙個簡單的類例項'''

i =12345

deff

(self)

:return

'hello world'

x = myclass

類有乙個名為__init__()的特殊方法(構造方法),該方法在類例項化時會自動呼叫,像下面這樣:

def

__init__

(self)

: self.data =

類定義了__init__()方法,類的例項化操作會自動呼叫__init__() 方法。如下例項化類myclass,對應的__init__()方法就會被呼叫。

x = myclass()

init()方法可以有引數,引數通過__init__()傳遞到類的例項化操作上。例如:

class

complex

:def

__init__

(self,realpart,imagpart)

: self.r = realpart

self.i = imagpart

x = complex(

3.0-

4.5)

print

(x.r, x.i)

#輸出結果: 3.0 -4.5

self代表類的例項,而非類

類的方法與普通的函式只有乙個特別的區別–它們必須有乙個額外的第一給引數名稱,按照慣例它的名稱是self.

class

test

:def

prt(self)

:print

(self)

print

(self.__class__)

t = test(

)t.prt(

)

class

people

: name =

'' age =

0 __weight =

0def

__init__

(self,n,a,w)

: self.name = n

self.age = a

self.__weight = w

defspeak

(self)

:print

(%s 說:我%d隨)

%(self.name,self.age)

p = people(

'runoob',10

,30)p.speak(

)

class

derivedclassname

(baseclassname1)

:1>..

.

baseclassname(示例中的基類名)必須與派生類定義在乙個作用域內。除了類,還可以用表示式,基類定義在另乙個模組中時這一點非常有用。

class derivedclassname(modname.baseclassname):

init: 建構函式,在生成物件時呼叫

del: 析構函式,釋放物件時使用

repr: 列印,轉換

setitem: 按照索引賦值

getitem: 按照索引獲取值

len: 獲得長度

cmp: 比較運算

call: 函式呼叫

add: 加運算

sub: 減運算

mul: 乘運算

truediv: 除運算

mod: 求餘運算

pow: 乘方

關於Python那些事兒

1.易於學習 python有相對較少的關鍵字,結構簡單,和乙個明確定義的語法,學習起來更加簡單。2.易於閱讀 python 定義的更清晰。3.易於維護 python的成功在於它的源 是相當容易維護的。4.乙個廣泛的標準庫 python的最大的優勢之一是豐富的庫,跨平台的,在unix,windows和...

Python那些事兒 Python中的生成器

python使用生成器對延遲操作提供了支援,所謂延遲操作,是指在需要的時候才產生結果,而不是立即產生結果。gen exp i for i in range 10 生成器表示式 print gen exp generator for i in gen exp 取出生成器表示式的值,for迴圈 prin...

python編譯碼的那些事兒

在python程式設計尤其是處理web應用時,遇到編譯碼問題的概率較大,通常這種問題也比較繁瑣,記下自己的理解,以備不時之需。編譯碼存在的意義主要是由於各種不同編碼方式的存在,有gbk啦,也有utf 8啦,還有gb2312等等。python中的decode和encode的引數意義是一樣的,即deco...