py 5.24
#面向?qū)ο?/span>
#類:模子。Person,不具體。
#實(shí)例/對象:依托于類產(chǎn)生的具體的帶有屬性的。alex
#實(shí)例化:產(chǎn)生對象的過程。 alex = Person()
#類:
#分為靜態(tài)屬性(一般的變量)。動態(tài)屬性(函數(shù))
# 查看類中的靜態(tài)屬性:類.變量名
#查看類中的動態(tài)屬性:類.函數(shù)名(或方法名)--->得到的是函數(shù)的內(nèi)存地址。
#調(diào)用動態(tài)屬性:類.函數(shù)名()
#創(chuàng)建類:class 類名(第一個(gè)字母必須大寫,后面沒有括號):
#創(chuàng)建對象:
# alex = Person(參數(shù)): #內(nèi)存中開辟一個(gè)屬于對象的內(nèi)存空間
# 同時(shí)類中會自動執(zhí)行 def __init__(self):函數(shù) --->外面的參數(shù)會通過這里傳進(jìn)來。
#self也會指向剛才對象打開的內(nèi)存空間,self與alex內(nèi)存地址相同。
#給__init__(self)傳參并定義self的變量值,存在內(nèi)存地址中,執(zhí)行結(jié)束后將結(jié)果返回給對象alex。
#這樣對象就產(chǎn)生了,可以用對象查看其中的各種屬性或者操作其它類中的方法。
#人狗大戰(zhàn):
# class Person: #建立一個(gè)類
# def __init__(self,name,sex,hp,ad): #初始化方法
# self.name = name
# self.sex = sex
# self.hp = hp
# self.ad = ad #執(zhí)行結(jié)束將各個(gè)變量值傳給對象。(因?yàn)樵谕粋€(gè)內(nèi)存地址)
# def attack(self,dog): #類中的一個(gè)方法。可以用對象直接調(diào)用,必須用這個(gè)類實(shí)例化的對象來調(diào)用。
# print('%s攻擊了%s'%(self.name,dog.name))
# print('%s掉了%s點(diǎn)血,還剩%s點(diǎn)血'%(dog.name,self.ad,dog.hp-self.ad))
#
# class Dog:
# def __init__(self, name, kind, hp, ad):
# self.name = name
# self.kind = kind
# self.hp = hp
# self.ad = ad
# def bite(self,person):
# print('%s咬了%s'%(self.name,person.name))
# if person.hp <= self.hp:
# person.hp = 0
# print('%s血量為0,game over'%person.name)
# else:
# print('%s掉了%s點(diǎn)血,還剩%s點(diǎn)血' % (person.name, person.ad, person.hp - self.ad))
#
# alex = Person('alex','男',50,2)
# egon = Person('egon','女',60,5)
# taibai = Dog('taibai','taidy',60,90)
# # taibai.bite(egon)
# alex.attack(taibai) #用對象直接調(diào)用類中的方法,省掉再傳對象參數(shù)給self的麻煩。
#對象調(diào)用類中的屬性:
#類中的屬性存在類開辟的內(nèi)存空間中,其它各個(gè)對象會自動產(chǎn)生一個(gè)變量指針指向類的內(nèi)存地址,調(diào)用的時(shí)候直接根據(jù)指針來查找即可。
# class Test:
# country = 'china'
# lis = ['span']
#
# obj = Test() #創(chuàng)建了一個(gè)不帶參數(shù)的對象。
# print(obj.country) #此處便是對象通過指針在類中找到的屬性。
# obj.country = 'England' #表示在對象本身的內(nèi)存空間中增加一個(gè)country屬性,并不改變類中的屬性。
# print(obj.country)
# obj.lis = ['Japan']
# obj.lis[0] = 'England' #改變屬性時(shí),對象會先在自己的內(nèi)存空間找是否存在這個(gè)屬性,如果有,則改變,如果沒有則去類中找。
# print(obj.lis) #obj中剛剛創(chuàng)建了lis屬性,所以改變的是自己。
# obj.lis[0] = 'England' #如果沒有l(wèi)is這個(gè)屬性,此處改的便是類中的屬性。
# print(obj.lis)
# print(Test.lis)
#總結(jié):靜態(tài)屬性是所有對象共享的,所以如果要修改靜態(tài)屬性,最好用類直接修改最準(zhǔn)確
#類名一般用來:查看或修改靜態(tài)屬性。
# 實(shí)例化對象
#對象名一般用來:查看或修改對象的屬性
# 調(diào)用方法 View Code
?
一、面向?qū)ο?/p>
?
轉(zhuǎn)載于:https://www.cnblogs.com/liujjpeipei/p/9083286.html
總結(jié)
- 上一篇: php 递归中的全局变量,PHP中递归的
- 下一篇: 在线代码编辑器 Codemirror 的