3 回答

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

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