初識面向對象
阿新 • • 發佈:2017-11-17
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)
初識面向對象