1. 程式人生 > >初識面向對象

初識面向對象

spa 方法 大寫 含義 添加 就是 交互 code pre

面向對象編程 是一種思想
對象就是具體的擁有準確屬性值的一些變量
類:一類具有相同屬性和方法的事物

類的定義 class關鍵字 類名的首字母大寫
類中直接定義屬性:靜態屬性(變量)動態屬性(函數)
類名的兩個作用:屬性引用實例化對象
類和屬性的操作:類名.屬性名 類名.__dict__[‘屬性名‘](不能修改)

技術分享圖片
class Person:  # 類名有兩個作用
    country = ‘中國‘  # 靜態屬性、數據屬性
    def __init__(self,life_value,aggr,name,job):  # 初始化方法
        self.lv = life_value  # 屬性,對象屬性
        self.aggr = aggr
        self.name = name
        self.job = job
    def walk(self):  # 動態屬性、函數屬性、方法
        print(‘%s is walking‘%self.name)
技術分享圖片

屬性引用

技術分享圖片
print(Person.walk)
# print(Person.walk())  # 報錯 少參數
print(Person.__dict__)
print(Person.__dict__[‘country‘])  # 中國
# Person.__dict__[‘country‘] = ‘印度‘  # 報錯 不能改變
print(Person.country)  # 中國 靜態屬性的查看
Person.role = ‘人‘  # 添加一個新靜態屬性
print(Person.role)  # 人
del Person.role  # 刪除一個靜態屬性
Person.country = ‘印度‘  # 修改一個靜態屬性
print(Person.country)  # 印度
技術分享圖片

實例化對象

實例化:從一個類中創造一個具體的對象的過程

print(callable(Person))  # True
p = Person()
print(p)  # <__main__.Person object at 0x00000000028CD198> Person的對象

實例化——類名(參數)
構造方法:造對象
初始化:給這個對象添加一些屬性 __init__
返回了一個初始化之後的對象
如何讓對象擁有具體的屬性
__init__方法:初始化方法,可以沒有,給對象添加一些必要的基礎屬性
self的含義:就是這個對象本身

技術分享圖片
p = Person(1000,2,‘金老板‘,‘boss‘)
print(p.lv)  # 1000
print(p.aggr)  # 2
print(p.name)  # 金老板
print(p.job)  # boss
print(p.__dict__)  # {‘lv‘: 1000, ‘aggr‘: 2, ‘name‘: ‘金老板‘, ‘job‘: ‘boss‘}
print(p.__dict__[‘lv‘])  # 1000
p.__dict__[‘lv‘] = 998  # 對象名.__dict__中的屬性值可以被修改
print(p.__dict__[‘lv‘],p.lv)  # 998 998
p.__dict__[‘sex‘] = ‘ladyboy‘  # 對象名.__dict__中的屬性值可以增加
print(p.sex)  # ladyboy
p.__dict__.pop(‘sex‘)  # 對象名.__dict__中的屬性值可以被刪除

p.sex = ‘ladyboy‘  # 添加一個屬性
print(p.sex)
p.sex = ‘girl‘  # 屬性的修改
del p.sex  # 刪除一個屬性
# 對象和屬性的操作:對象名.屬性名 對象名.__dict__[‘屬性名‘]

# Person.walk(p)  # 金老板 is walking
p.walk()  # Person.walk(p)
技術分享圖片

面向對象交互

簡單的人狗大戰

技術分享圖片
class Person:
    def __init__(self,life_value,aggr,name,job):
        self.name = name
        self.aggressive = aggr
        self.life = life_value
        self.job = job
    def attack(self,dog_obj):
        print(‘%s 攻擊了 %s‘%(self.name,dog_obj.name))
        dog_obj.life = dog_obj.life - self.aggressive



class Dog:
    def __init__(self,life_value,aggr,name,kind):
        self.life = life_value
        self.aggressive = aggr
        self.name = name
        self.kind = kind
    def bite(self,person):
        print(‘%s 攻擊了 %s‘%(self.name,person.name))
        person.life = person.life - self.aggressive

dog = Dog(1000,100,‘鐵蛋‘,‘土狗‘)
boss_gold = Person(100,2,‘太黑‘,‘old_driver‘)
boss_gold.attack(dog)
print(dog.life)
dog.bite(boss_gold)
print(boss_gold.life)

初識面向對象