2013-07-24 115 views
-1

我剛剛觀察到與C++相比,python中的類是如何不同的。 像, 在C++python類定義Vs C++類定義

Class test 

{ 


    int a,b; 

    Void func() 

    { 

    } 

} 

在上述類模板,a和b僅物體在模板中定義的變量。

儘管在python中,你不能指定類在類定義中可以擁有的對象和變量。

一樣,

Class student(self): 

    def func(self,x) 
     pass 

在上面的類模板,我們不能定義任何對象變量。 dir(student)只會給出函數和類變量的列表。

想,如果我實例化這個類,比方說,一個物體S.如果我想給一個名字給學生,然後, S.name =「「會做

現在目錄(S)將顯示名稱屬性,而迪爾(學生)將不會有一個名稱字段 對我來說聽起來有點奇怪。

python的解釋特性允許添加儘可能多的字段,因爲我們想要的對象很好。這來找我

問題是

  1. 他們爲什麼不提供在類定義定義變量的功能? ,並且

  2. 如何在實例化過程中保留存儲器,並在新變量添加到對象時進行修改?

感謝,

-kallis

+0

究竟是什麼問題? – aaronman

+0

帖子中的任何位置都沒有「模板」。 – Griwes

回答

2
  1. 的Python強調動態類型,所以你可以只要你想添加變量。你可以在__init__的構造函數中添加你想要的變量。你也可能想要class variables。如果你想真的想要,你可以覆蓋the __setattr__ method阻止人們添加新的屬性。您也可以使用__slots__,但you shouldn't

  2. 如果您不使用__slots__,屬性將存儲在__dict__字典中。所以一個類實例本身只需要字典指針的空間(加上其他一些小東西)。