Python入門8 方法,屬性,迭代器

2021-08-07 03:29:43 字數 2744 閱讀 9518

1,繼承機制:

上章講到了class man(human): 這個表示類man繼承human。下面介紹super( ),乙個例子如下:

>>

>

class

human

:def

__init__

(self)

: self.gender =

'man'

defsay

(self)

:if self.gender ==

'man'

:print

'i am a man'

else

:print

'i am a women'

>>

>

class

man(human)

:def

__init__

(self)

: self.name =

'jack ma'

>>

> f = man(

)>>

> f.name

'jack ma'

>>

> f.gender

traceback (most recent call last)

: file ""

, line 1,in

attributeerror: man instance has no attribute 'gender'

>>

> f.say(

)traceback (most recent call last)

: file ""

, line 1,in

attributeerror: man instance has no attribute 'gender'

做了如下修改:

>>

>

class

man(human)

:def

__init__

(self)

:super

(man,self)

.__init__(

) self.name =

'jack ma'

>>

> f = man(

)>>

> f.say(

)typeerror:

super

() argument 1 must be type

,not classobj

# 這個python2會報錯,python3沒有問題

2,靜態方法(可以直接通過類名呼叫的方法):

>>

>

class

myclass

>>

> myclass.mmm(

)#直接通過類名呼叫

3,迭代器:

#迭代器使用自己的方法:

>>

>

class

fibolacci

:def

__init__

(self)

: self.a =

0 self.b =

1def

next

(self)

: self.a,self.b = self.b,self.a+self.b

def__iter__

(self)

:return self

>>

> fib = fibolacci(

)>>

>

for f in fib:

if(f>

1000):

print f

break

1597

#for迴圈內部事實上就是先呼叫iter()把iterable變成iterator在進行迴圈迭代的

>>

> x =[1

,3,4

]>>

> i =

iter

(x)>>

>

next

(i)1

>>

>

next

(i)3

>>

>

next

(i)4

#如果上面那個不好理解,那下面這個在網上找的可能更好理解:

class

fabs

(object):

def__init__

(self,

max)

: self.

max=

max self.n, self.a, self.b =0,

0,1#特別指出:第0項是0,第1項是第乙個1.整個數列從1開始

def__iter__

(self)

:return self

defnext

(self)

:if self.n < self.

max:

r = self.b

self.a, self.b = self.b, self.a + self.b

self.n = self.n +

1return r

raise stopiteration(

)print fabs(5)

for key in fabs(5)

:print key

python魔法方法 屬性和迭代器(1)

python基礎教程 第九章總結 1.關於 的方法,一般都是在使用到相關功能是會自動呼叫 2.在關於多層迭代生成器時,如果迭代的是字串的話,首先是沒有必要 其次這樣會陷入死迴圈中,因為字串的首字母取出來迭代時,首字母會繼續被當做乙個字串來無窮迭代。3.生成器主要由 生成器函式與生成器迭代器組成。4....

Python 私有方法 屬性

私有方法私有方法無法從外部直接調取。class dog 私有方法 def send msg self 命名方法有 要求 print 正在傳送簡訊 公有方法 defsend msg self,new money if new money 10000 self.send msg 符合要求後跳轉到私有方法...

Python中類的方法屬性與方法屬性的動態繫結

最近在 學習python 純粹是自己的興趣愛好,然而並沒有系統地看python 程式設計書籍,覺得上面描述過於繁瑣,在 找了一些學習的 發現廖雪峰老師的 上面的學習資源很不錯,而且言簡意賅,提取了一些 python python 的執行 缺點就是沒有系統的看 python 的書籍,不能及時的將知識的...