精進,**於重複和深入。
——傑通過學習,我對這兩則的理解是這樣的。 is a 指的物件是類和物件之間的一種繼承關係,比如,類human 和物件「小明」;has a 指的物件是類和類之間的一種包含關係。
我們學習理解has a和is a 的關係區別,實則是在弄明白**之間是實現繼承和介面繼承的關係,提高**的重用性。
下面我們來看乙個列子
class compter:
def __init__(self,brand,type,color):
self.brand=brand
self.type=type
self.color=color
def online(self):
print("正在使用電腦上網")
def __str__(self):
return self.brand + '-------'+self.type+'------'+self.color
class book:
def __init__(self,bname,number,author):
self.bname=bname
self.number=number
self.author=author
def __str__(self):
return self.bname+self.author+self.number
class sudent:
def __init__(self,name,compter,book):
self.name=name
self.compter=compter
self.book=
def __str__(self):
return self.name+'------->'+str(self.compter)+'-----'+str(self.book)
c=compter('mac','pro','深灰色')
print(c)
book('盜墓','10','南派')
print(book)
stu=sudent('fefbg',c,book)
print(stu)
結果
mac-------pro------深灰色
fefbg------->mac-------pro------深灰色-----
這裡我們可以發現,sudent和compter、book之間屬於同級關係的類,但是我們在sudent中,我們引用了compter和book。
在初次的執行過程中,我發現很多輸出錯誤。在後來的學習過程中,我才知道,這裡有乙個變數的概念。
在python中,有系統變數和自定義的變數。系統變數,主要是指int,list,set,string等;自定義變數,我們可以理解成是使用者自己寫的,比如我們這裡的類,就是我們寫的。
最後的解決辦法是,在輸出的地方,把輸入的變數(物件)強轉成字串。
總結:
在python中,不僅函式之間可以相互引用,而且類之間也可以相互引用。一開始,我理解不了,但是也漸漸認識到python的強大。不管是我們賦值,還是建立物件,python都會給我們分配位址,既然分配了位址,我們就可以大膽引用,引用的過程中,注意型別的轉化。
is A和has A的區別
is a 與 has a 的關係。is a 代表類之間或類與介面的繼承關係,比如貓是動物,狗也是動物,都繼承了動物的共同特性,再用oo語言實現時,應將貓和狗定義成兩種類,均繼承動物類。has a 代表的是物件和他成員的從屬關係,同一種類的物件,通過它們的屬性的不同值來區別。比如張三和李四都是人,但他...
is A和has A的區別
is a 與 has a 的關係。is a 代表類之間或類與介面的繼承關係,比如貓是動物,狗也是動物,都繼承了動物的共同特性,再用oo語言實現時,應將貓和狗定義成兩種類,均繼承動物類。has a 代表的是物件和他成員的從屬關係,同一種類的物件,通過它們的屬性的不同值來區別。比如張三和李四都是人,但他...
Is a 和Has a之間關係
is a 和has a之間關係 可以這樣理解 汽車是一種交通工具 汽車 is a 交通工具 汽車有乙個發動機 汽車 has a 發動機 is a 一般是繼承關係 has a 一般是組合關係 或者這樣理解 has a 關係即組合關係,通過定義類的屬性的方式實現的 is a 關係即繼承關係,通過類繼承實...