面向物件--有引數的__init__方法
阿新 • • 發佈:2020-09-14
有引數的__init__()方法
class Hero(object):
"""定義了一個英雄類,可以移動和攻擊"""
def __init__(self, name, skill, hp, atk, armor):
""" __init__() 方法,用來做變數初始化 或 賦值 操作"""
# 英雄名
self.name = name
# 技能
self.skill = skill
# 生命值:
self.hp = hp
# 攻擊力
self.atk = atk
# 護甲值
self.armor = armor
def move(self):
"""例項方法"""
print("%s 正在前往事發地點..." % self.name)
def attack(self):
"""例項方法"""
print("發出了一招強力的%s..." % self.skill)
def info(self):
print("英雄 %s 的生命值 :%d" % (self.name, self.hp))
print("英雄 %s 的攻擊力 :%d" % (self.name, self.atk))
print("英雄 %s 的護甲值 :%d" % (self.name, self.armor))
# 例項化英雄物件時,引數會傳遞到物件的__init__()方法裡
taidamier = Hero("泰達米爾", "旋風斬", 2600, 450, 200)
gailun = Hero("蓋倫", "大寶劍", 4200, 260, 400)
# print(gailun)
# print(taidamier)
# 不同物件的屬性值的單獨儲存
print(id(taidamier.name))
print(id(gailun.name))
# 同一個類的不同物件,例項方法共享
print(id(taidamier.move()))
print(id(gailun.move()))
說明:
-
通過一個類,可以建立多個物件,就好比 通過一個模具建立多個實體一樣
-
__init__(self)
中,預設有1個引數名字為self,如果在建立物件時傳遞了2個實參,那麼__init__(self)
中出了self作為第一個形參外還需要2個形參,例如__init__(self,x,y)
注意:
- 在類內部獲取 屬性 和 例項方法,通過self獲取;
-
在類外部獲取 屬性 和 例項方法,通過物件名獲取。
-
如果一個類有多個物件,每個物件的屬性是各自儲存的,都有各自獨立的地址;
- 但是例項方法是所有物件共享的,只佔用一份記憶體空間。類會通過self來判斷是哪個物件呼叫了例項方法。