python中的class類使用方法 探索3

2021-09-27 11:53:14 字數 3544 閱讀 8967

(1)namespace是名字和物件的對映,多數命名空間使用dict來實現,不同namespace中的名稱沒有關係

(2)模組.xx, xx表示模組物件中的乙個屬性,可以是乙個函式。

(3)scope是python程式的乙個namespace可以直接訪問的乙個文字範圍

類定義與函式定義相似,通常在類中的語句都是函式定義def,當進入乙個類定義時,乙個的namespace被建立,並被當做區域性scope來使用。

參考部落格:

1

.class與isinstance

classa:

pass

#pass不起任何作用,只佔位

class

b(a)

:pass

isinstance

(b()

,a)#注意這裡不能寫成isinstance(b,a)

輸出:true2.

class

2.1類物件

class

first

:#建立了乙個名叫first的類,並且乙個新的namespace被建立

i=1#在這個namespace中建立了乙個名字i,也叫資料屬性

deff

(self)

:#在first類中定義了乙個f函式,也叫方法

return

"hello"

first.i #類物件的屬性引用

輸出:1

x=first(

)#將類物件例項化,也就是再在類名first後面加上函式標記

x.i #使用函式的形式進行屬性引用

輸出:1

class

first

:def

__init__

(self,ar,br)

:#為類的例項化提供初始值,在類例項化時會自動呼叫init

#data,a,b都是屬性

self.data=

self.a=ar

self.b=br

first.i #由於前後兩個的類名相同,所以會被後面的覆蓋掉

x=first(3,

4)#類物件first例項化

輸出:__main__.first

x.a #對例項化後的first進行屬性引用

輸出:3

x.b輸出:

4x.data

輸出:class

first

:#建立了乙個名叫first的類,並且乙個新的namespace被建立

i=1#在這個namespace中建立了乙個名字i,也叫資料屬性

deff

(self)

:#在first類中定義了乙個f函式,也叫方法

return

"hello"

x=first(

)#例項化

x.f輸出:

>>

x.f(

)#使用例項化first中的f方法

輸出:'hello'

first.f(x)

#與前者等價

輸出:'hello'

注意:如果資料屬性與方法名稱相同,前者會覆蓋後者,所以方法名最好大寫,資料屬性前加_,資料屬性可以被方法引用,方法第乙個引數是self,方法函式定義可以在類外

deff

(self,x,y)

:#方法名稱大寫,且放在類定義外面

print

(self.data)

#在外面使用了class裡面init的引數值

return

min(x,y)

classc:

f=f #呼叫了外面的f方法

def__init__

(self)

: self.data=

1def

g(self)

:#類c中的第二個方法

print

(self.data)

#不能只用data

return

"hello"

h=gx=c(

)#例項化

x.h(

)輸出:

1'hello'

x.f(0,

2)輸出:1

02.2exceptions類

classb:

pass

class

c(b)

:#c繼承了b

pass

class

d(c)

:#d繼承了c,也就是b,c,d是同個東西

pass

for c in

[b,c,d]

:try

:raise c(

)except d:

print

("d"

)except c:

print

("c"

)except b:

print

("b"

)2.3迭代器

class

reverse

:#將self.data資料從後往前迭代輸出

def__init__

(self,data)

:#初始化中加了乙個data

self.data=data

self.index=

len(data)

def__iter__

(self)

:return self

defnext

(self,b)

:if self.index==0:

raise stopiteration

print

(b) self.index=self.index-

1return self.data[self.index]

reverse=reverse(

'abc'

)#例項化,reverse的輸入引數只看init中的引數

reverse.

next(1

)#next只看裡面的引數,所以必須要有b

輸出:1

cd=reverse.__iter__(

)def

reverse

(data)

:#由於reverse函式中帶有yield,所以這個函式變成了生成器,所以會自帶next函式

for index in

range

(len

(data)):

yield data[index]

#return,yield只能放在函式裡面

for char in reverse(

'abc'):

print

(char)

輸出:abc

[63]data=

'abc'

for index in

range

(len

(data)):

print

(data[index]

) 輸出:ab

c

Python類中的方法(CLASS)

在類中可以根據需要定義一些方法,定義方法採用def關鍵字,在類中定義的方法至少會有乙個引數,一般以名為 self 的變數作為該引數 用其他名稱也可以 而且需要作為第乙個引數。舉例 class people sname xiaohong high 172.5 weight 180 男 def eat ...

python中class類的屬性包裝

對比 class person object def init self self.age none defage self,n if 0 n 100 self.age n else print age error person1 person person1.age 1000 print pers...

python 類 Class 初步使用 中

usr bin python coding utf 8 class parent parentint 100def init self print 呼叫父類建構函式 def parentfar self print 呼叫父類方法 def setint self,a parent.parentint ...