Python語言的類例項化後的類內資料的私有和公有

2021-08-20 14:45:53 字數 1690 閱讀 1094

首先說這個特性有些坑爹,在周五耗掉了我大半天來弄懂了這個問題(之前關鍵是不知道怎麼描述這個問題!)另外我寫python喜歡寫分號;見笑了…

先說結論結論就是,私有變數的寫法:

class

obj(object):

"""docstring for obj"""

def__init__

(self, arg):

super(obj, self).__init__()

self.arg = arg;

self.arr = ;

公有變數的寫法:

class

obj(object):

"""docstring for obj"""

arg = 0;

arr = ;

def__init__

(self, arg):

super(obj, self).__init__()

公有變數的情況:

class

obj(object):

"""docstring for obj"""

arg = 0;

arr = ;

def__init__

(self, arg):

super(obj, self).__init__()

#self.arg = arg

#self.arr = ;

defexp

(): obj1 = obj(1);obj2 = obj(2);

print

'arr of obj1: ' + str(obj1.arr);

print

'arr of obj2: ' + str(obj2.arr);

if __name__ == '__main__':

exp();

執行得到:(這。。。多個例項化的時候很無語)

arr

ofobj1: [1]

arrof

obj2: [1]

[finished in 0.1s]

私有變數的寫法:

class

obj(object):

"""docstring for obj"""

#arg = 0;

#arr = ;

def__init__

(self, arg):

super(obj, self).__init__()

self.arg = arg

self.arr = ;

defexp

(): obj1 = obj(1);obj2 = obj(2);

print

'arr of obj1: ' + str(obj1.arr);

print

'arr of obj2: ' + str(obj2.arr);

if __name__ == '__main__':

exp();

結果是:

arr

ofobj1: [1]

arrof

obj2:

[finished in 0.0s]

類的例項化

類 物件 例項 個人的理解,不確定對錯,歡迎大佬指教 建立乙個物件也就是例項化,抽象類不能例項化,創出的物件不能叫例項。普通的類創出來的物件也可以叫例項。cat c new cat 1.new cat,意思是在堆記憶體中建立乙個cat類的物件 2.的建立物件的同時,呼叫cat類中的構造方法,對剛生成...

python反射例項化 Python的類反射機制

反射就是通過字串的形式,匯入模組 通過字串的形式,去模組尋找指定函式並執行。python有四個內建函式 函式功能 getattr object,attr default 獲取指定字串名稱的物件屬性或方法,如果物件有該屬性則返回屬性值,如果有該方法則返回該方法的記憶體位址,如果都沒有就報錯,如果指定了...

python類和例項化

簡答介紹類和例項 python是物件導向的語言,最主要的就是類和例項,類是抽象的模版 建立乙個類 class studen object class 後接類名,定義的類名大些字母開頭,object為類的繼承,沒有合適的繼承類用object類,這是所有類最終會繼承的類 類的例項化 bart stude...