3 回答

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊
A1:參數(shù)self代表實(shí)例本身,例如: A=FooClass(),那么self就代表A,類函數(shù)中,self是必需的
A2:__class__獲得已知對象的類,任何對象都有這個(gè)屬性,__name__取得類名
A3:version是類成員變量,實(shí)例化后是實(shí)例變量,類函數(shù)獲得實(shí)例變量需要帶上實(shí)例本身,這個(gè)其實(shí)我也很難解釋得很透徹,可以大概講一下
version = 0.1 這里在實(shí)例化之前就已經(jīng)生成了
而__init__(self,nm='Louis wu'):這里的nm變量是在實(shí)例化的時(shí)候生成的
在類方法中訪問version和nm的方式是一樣的,self.version和self.nm
但是version在類沒有實(shí)例化的情況下也是可以訪問的,因?yàn)樗趯?shí)例化之前就已經(jīng)聲明了
你可以嘗試
print FooClass.version 是可以得到version的值的
但是FooClass.nm是不可以的,必須是實(shí)例化之后才生成這個(gè)變量,FooClass().nm就可以訪問到了

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊
1.Python是一門動(dòng)態(tài)語言,任何實(shí)體都可以動(dòng)態(tài)地添加或刪除屬性。
2.一個(gè)類定義了一個(gè)作用域。
3.類實(shí)例也引入了一個(gè)作用域,這與相應(yīng)類定義的作用域不同。
4.在類實(shí)例中查找屬性的時(shí)候,首先在實(shí)例自己的作用域中查找,如果沒有找到,則再在類定義的作用域中查找。
5.在對類實(shí)例屬性進(jìn)行賦值的時(shí)候,實(shí)際上會(huì)在類實(shí)例定義的作用域中添加一個(gè)屬性(如果還不存在的話),并不會(huì)影響到相應(yīng)類中定義的同名屬性。
添加回答
舉報(bào)