3 回答

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊
__something
class Test: a = None b = None def __init__(self, a): print self.a self.a = a self._x = 123 self.__y = 123 b = 'meow'
a
b
Test.a
Test.b
__init__
print self.a
找不到實(shí)例變量,因此返回類(lèi)變量 self.a = a
*一個(gè)新的實(shí)例變量 a
是被創(chuàng)造出來(lái)的。這樣就隱藏了類(lèi)變量 self.a
現(xiàn)在將引用實(shí)例變量;要訪問(wèn)類(lèi)變量,現(xiàn)在必須使用 Test.a
分配給 self._x
創(chuàng)建一個(gè)新的實(shí)例變量。它被認(rèn)為“不是公共API的一部分”(也是受保護(hù)的),但從技術(shù)上講,它沒(méi)有不同的行為。 分配給 self.__y
創(chuàng)建一個(gè)名為 _Test__y
,也就是說(shuō),它的名稱被損壞了,所以除非您使用損壞的名稱,否則不能從類(lèi)外部訪問(wèn)它。這可以用于“私有”變量。 分配給 b
創(chuàng)建一個(gè)局部變量。它在任何地方都是不可用的,但是 __init__
函數(shù),因?yàn)樗鼪](méi)有保存在實(shí)例、類(lèi)或全局范圍中。

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
Class.x = 5
_foo
__foo
_classname__foo
.

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊
class test:<br> def __init__(self, a): self.__elements = a<br> def change_a(self): self.__elements = 5
t = test(5)
這將按對(duì)象訪問(wèn)._classname_Privatevaribalename
print(t._test__elements)
這將打印a‘的更改值。
添加回答
舉報(bào)