python入門 P39類和物件 拾遺

2021-10-05 22:58:10 字數 2163 閱讀 9394

組合就是把舊類例項化放到新類裡面進行呼叫,**如下

class

chairs()

:def

__init__

(self,x)

: self.num = x

class

glasses()

:def

__init__

(self,y)

: self.num = y

class

build()

:def

__init__

(self,x,y)

: self.chairs = chairs(x)

self.glassses = glasses(y)

defcall

(self)

:print

("chairs num is %d, glasses num is %d"

%(self.chairs.num,self.glassses.num)

)building = build(3,

5)building.call(

)

chairs num is 3, glasses num is 5
例項屬性和類屬性名字相同,例項屬性會把類屬性覆蓋掉

class

num():

count =

0a = num(

)b = num(

)c = num(

)print

(a.count, b.count, c.count)

a.count =

10print

(a.count, b.count, c.count)

num.count =

100print

(a.count, b.count, c.count)

#a.count沒變是因為在前面對a.count進行賦值的時候,例項屬性把類屬性覆蓋了

0 0 0

10 0 0

10 100 100

屬性名和方法名相同,屬性會覆蓋方法,**如下

class

num():

defx

(self)

:print

("right"

)a = num(

)a.x(

)a.x =

10print

(a.x)

a.x(

)

typeerror: 'int' object is not callable

right

10

tips:

1、不要在乙個類裡面定義出所有的特性和方法,應該利用繼承和組合機制進行拓展

2、用不同的詞性名命名,如屬性名用名詞,方法名用動詞

python嚴格要求方法需要有例項才能被呼叫,這種限制其實就是python所謂的繫結概念,**如下

class

num:

defx()

:print

("right"

)num.x(

)a = num(

)a.x(

)

typeerror: x() takes 0 positional arguments but 1 was given

right

哪怕把原始的類刪除了,但也不影響例項物件,**如下

classcc(

):defgetnum

(self, x, y)

: self.x = x

self.y = y

defcall

(self)

:print

(self.x, self.y)

dd = cc(

)dd.getnum(5,

6)dd.call(

)del cc

dd.getnum(7,

8)dd.call(

)

5 6

7 8

python入門 P37類和物件 物件導向程式設計

class相當於房子圖紙,每個物件是參照圖紙建立的實際的房子,self相當於每一棟房子的門牌號,在下面這段 裡,每個物件都是呼叫了自己那棟房子裡的方法,就是因為self tips 在方法裡,self必須是第乙個 class build def setname self,name self.name ...

python入門 P36類和物件 給大家介紹物件

下面展示一些python3建立類,類的屬性 方法,以及呼叫的 這裡還用到了多型,物件fighter和defender都呼叫了相同名字的方法,但卻實現的是不同的功能 tips 類的定義首字母一般大寫,方法一般小寫,便於區分 class fight define class name color gre...

C 類和物件入門

物件的含義是指具體的某乙個事物,即在現實生活中能夠看得見摸得著的事物。在物件導向程式設計中,物件所指的是計算機系統中的某乙個成分。在物件導向程式設計中,物件包含兩個含義,其中乙個是資料,另外乙個是動作。物件則是資料和動作的結合體。物件不僅能夠進行操作,同時還能夠及時記錄下操作結果。這是什麼玩意,通俗...