定義類並且建立物件為其新增屬性,獲取屬性
阿新 • • 發佈:2018-12-11
定義類
定義一個類,格式如下:
class 類名:
方法列表
demo:定義一個Hero類
# class Hero: # 經典類(舊式類)定義形式
# class Hero():
class Hero(object): # 新式類定義形式
def info(self):
print("英雄各有見,何必問出處。")
說明:
-
定義類時有2種形式:新式類和經典類,上面程式碼中的Hero為新式類,前兩行註釋部分則為經典類;
-
object 是Python 裡所有類的最頂級父類;
-
類名 的命名規則按照"大駝峰命名法";
- info 是一個例項方法,第一個引數一般是self,表示例項物件本身,當然了可以將self換為其它的名字,其作用是一個變數 這個變數指向了例項物件
建立物件
python中,可以根據已經定義的類去創建出一個或多個物件。
建立物件的格式為:
物件名1 = 類名()
物件名2 = 類名()
物件名3 = 類名()
建立物件demo:
class Hero(object): # 新式類定義形式 """info 是一個例項方法,類物件可以呼叫例項方法,例項方法的第一個引數一定是self""" def info(self): """當物件呼叫例項方法時,Python會自動將物件本身的引用做為引數, 傳遞到例項方法的第一個引數self裡""" print(self) print("self各不同,物件是出處。") # Hero這個類 例項化了一個物件 taidamier(泰達米爾) taidamier = Hero() # 物件呼叫例項方法info(),執行info()裡的程式碼 # . 表示選擇屬性或者方法 taidamier.info() print(taidamier) # 列印物件,則預設列印物件在記憶體的地址,結果等同於info裡的print(self) print(id(taidamier)) # id(taidamier) 則是記憶體地址的十進位制形式表示
說明:
- 當建立一個物件時,就是用一個模子,來製造一個實物
新增和獲取物件的屬性
class Hero(object): """定義了一個英雄類,可以移動和攻擊""" def move(self): """例項方法""" print("正在前往事發地點...") def attack(self): """例項方法""" print("發出了一招強力的普通攻擊...") # 例項化了一個英雄物件 泰達米爾 taidamier = Hero() # 給物件新增屬性,以及對應的屬性值 taidamier.name = "泰達米爾" # 姓名 taidamier.hp = 2600 # 生命值 taidamier.atk = 450 # 攻擊力 taidamier.armor = 200 # 護甲值 # 通過.成員選擇運算子,獲取物件的屬性值 print("英雄 %s 的生命值 :%d" % (self.name, self.hp)) print("英雄 %s 的攻擊力 :%d" % (self.name, self.atk)) print("英雄 %s 的護甲值 :%d" % (self.name, self.armor)) # 通過.成員選擇運算子,獲取物件的例項方法 taidamier.move() taidamier.attack()
在方法內通過self獲取物件屬性
class Hero(object):
"""定義了一個英雄類,可以移動和攻擊"""
def move(self):
"""例項方法"""
print("正在前往事發地點...")
def attack(self):
"""例項方法"""
print("發出了一招強力的普通攻擊...")
def info(self):
"""在類的例項方法中,通過self獲取該物件的屬性"""
print("英雄 %s 的生命值 :%d" % (self.name, self.hp))
print("英雄 %s 的攻擊力 :%d" % (self.name, self.atk))
print("英雄 %s 的護甲值 :%d" % (self.name, self.armor))
# 例項化了一個英雄物件 泰達米爾
taidamier = Hero()
# 給物件新增屬性,以及對應的屬性值
taidamier.name = "泰達米爾" # 姓名
taidamier.hp = 2600 # 生命值
taidamier.atk = 450 # 攻擊力
taidamier.armor = 200 # 護甲值
# 通過.成員選擇運算子,獲取物件的例項方法
taidamier.info() # 只需要呼叫例項方法info(),即可獲取英雄的屬性
taidamier.move()
taidamier.attack()