1. 程式人生 > >面向對象二次整理(基礎,屬性引用,方法引用.綁定方法)

面向對象二次整理(基礎,屬性引用,方法引用.綁定方法)

產生 共享 私有 類的初始化 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‘)

...例子太多,先不寫了
    

類的用法:

  1. 實例化產生對象

ff = Student(‘ff‘,‘famale‘)

jm = Student(‘jm‘,‘male‘)

  1. 屬性引用

數據屬性

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 #會自動傳值

面向對象二次整理(基礎,屬性引用,方法引用.綁定方法)