1. 程式人生 > >定義類並且建立物件為其新增屬性,獲取屬性

定義類並且建立物件為其新增屬性,獲取屬性

 

定義類

定義一個類,格式如下:

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()