#我們可以向?qū)ο笾刑砑幼兞?對象中的變量稱為屬性 對象.屬性名 = 屬性值
mc.name ='葫蘆娃'
hlw = mc.name
mc1.name ='鋼鐵俠'
gtx = mc1.name
print(hlw)
print(gtx)
#使用類創(chuàng)建對象的流程:1.創(chuàng)建變量mc,2.在內(nèi)存中創(chuàng)建一個新的對象
#類的定義:類和對象都是現(xiàn)實生活中內(nèi)容的抽象
#實際上所有的事物都是由2部分組成 第一部分是數(shù)據(jù)(屬性),第二部分是行為(方法)
#嘗試定義一個人
class Ren():
#在這個代碼塊中我們可以定義變量和行數(shù)
#在類中我們所定義的變量將會成為所有實例的公共屬性
#所有實例都會訪問這些變量
? ? a =10
? ? b =20
? ? name ='葫蘆娃'
? ? #在類中也可以定義函數(shù),類中定義的函數(shù)我們稱為方法,這些方法也可以通過該類的實例來訪問
? ? def say_hello(w):#w如果是p1調(diào)用,第一個參數(shù)就是p1對象,如果p2調(diào)用 ,就是p2對象,但一般我們都會把這個參數(shù)寫成self
? ? ? ? print('你好,我是%s'%w.name)#在類中方法不能直接訪問類中的屬性
? ? ? ? print(w)
p1 =Ren()
p2 = Ren()#創(chuàng)建Ren的實例
print(p1.a,p2.b)
print(p1.name)
print(p2.name)
#調(diào)用語法:對象.方法名 方法調(diào)用和函數(shù)調(diào)用的區(qū)別:如果函數(shù)調(diào)用函數(shù)有幾個形參則調(diào)用函數(shù)的時候就要傳遞幾個實參
#但如果是方法調(diào)用 默認(rèn)要傳遞一個參數(shù)所以方法中至少要調(diào)用一個形參
#注意 方法調(diào)用時第一個參數(shù)由解釋器自動傳遞 所以定義方法時 至少要定義一個形參
p1.say_hello()
p2.say_hello()
#屬性和方法
#實例為什么能訪問到類中的屬性和方法呢?
#類中定義的屬性和方法都是公共的,任何該類的實例都可以訪問
#屬性和方法的查找流程:當(dāng)我們調(diào)用一個對象的屬性時 解析器會先在當(dāng)前對象中尋找是否含有該屬性,有的話則返回當(dāng)前對象的屬性值
#沒有的話擇取他檔期對象的類對象中尋找,有返回當(dāng)前屬性如果沒有的話就會報錯
#修改p1的name屬性值
p1.name ='鋼鐵俠'
p2.name ='葫蘆娃'
print(p1.name)
print(p2.name)#類對象和實例對象都可以保存屬性和方法
#如果這個屬性(方法)是所有實例共享的,則應(yīng)該將其保存到類的對象中
#如果這個屬性(方法)是某個實例獨有的,則應(yīng)該保存到實例對象中