面向對象二次整理(基礎,屬性引用,方法引用.綁定方法)
阿新 • • 發佈:2017-09-03
產生 共享 私有 類的初始化 str 實例 pri 高級 obj
概念之類的去百度一下...
基礎
類
屬性
實例變量
類變量(默認共享)
私有屬性(__var)
方法
構造方法
析構方法或析構函數
私有方法
對象: 實例化一個類之後得到的對象
封裝
把一些功能的實現細節不對外暴露
類的初始化(__init__): 就是給對象定義一些自己的特征,不能有返回值
繼承
代碼的重用
單繼承
多繼承
2.7的經典類-->深度優先,新式類-->廣度優先
3.x 均是廣度優先
class Foo()
多態
接口重用,一種接口,多種實現
高級屬性:
靜態方法 與類無關,不能訪問類裏的任何屬性和方法 類方法 只能訪問類變量 屬性@property 把一個方法變成一個靜態屬性 反射 getattr(obj,str) setattr(obj,str,val) hasattr(obj,str)
屬性引用
ff對象 特征: name = ‘ff‘ sex = famale school = ‘qh‘ 技能: def talk(self): print(‘很炫‘) def run(self): print(‘is running‘) jm對象 特征: name = ‘jm‘ sex = male school = ‘qh‘ 技能: def talk(self): print(‘is talking‘) def run(self): print(‘is running‘) 總結類(學 python 的人) class study_person: 共同的特征 school = ‘qh‘ 共同的技能 def talk(self): print(‘is talking‘) def run(self): print(‘is running‘)
class Sutdent: school = ‘qh‘ #數據屬性 也就是類的變量,類下面的方法的共同的屬性 def __init__(self,name,sex): #函數屬性 self.name = name self.sex = sex def talk(self): print(‘is talking‘) def walk(self): print(‘is running‘) ff = Study_person(‘ff‘,‘famale‘) mm = Study_person(‘mm‘,‘male‘) ...例子太多,先不寫了
類的用法:
- 實例化產生對象
ff = Student(‘ff‘,‘famale‘)
jm = Student(‘jm‘,‘male‘)
- 屬性引用
數據屬性
print(類名.__dict__)
print(Student.school)
#屬性修改
Student.school = ‘bd‘
#增
Student.xx = ‘666‘
#刪
del Student.xx
函數屬性
print(Student.talk)
print(Student.walk)
對象的用法
對象本身並沒有函數屬性,只存放了對象自己特有的特征,它的特征在類裏 (school)
class Sutdent:
school = ‘qh‘ #數據屬性
def __init__(self,name,sex): #函數屬性
self.name = name
self.sex = sex
def talk(self):
print(‘is talking‘)
def walk(self):
print(‘is running‘)
ff = Student(‘ff‘,‘famale‘)
jm = Student(‘jm‘,‘male‘)
print(ff.name)
print(ff.sex)
print(ff.school,id(ff.school))
print(jm.school,id(jm.school))
print(Student.school,id(Student.school))
如果school在類的外部, 則無法訪問.
產生一個類會有一個類的__dict__,產生一個對象會有一個對象的__dict___(實例化一個類後得到的對象),共有特征去類裏找.
綁定方法 #特性: 自動傳值
ff.walk() #ff.walk(ff) #Student.walk(ff) 把調用者當做第一個參數傳給walk #會自動傳值
面向對象二次整理(基礎,屬性引用,方法引用.綁定方法)