(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 ...