python是動態語言,可以給任何物件繫結屬性
>>
>
class
test
(object):
pass
>>
> t = test(
)>>
> t.test =
'12312312'
>>
> t.test
'12312312'
>>
>
type
(t)<
class
'__main__.test'
>
python沒有private等關鍵字來修飾,憑自覺。
可以看出來__name
被重新命名為_privatetest__name
,不過python並不會阻止你用這個名字去訪問,預設新增了單_
的變數都不要隨意訪問。
使用__slots__
來限制,name
不在元組中,所以無法繫結
>>
>
class
test
(object):
__slots__ =
('test'
)pass
>>
> t = test(
)>>
> t.name =
"nn"
traceback (most recent call last)
: file ""
, line 1,in
attributeerror:
'test'
object has no attribute 'name'
>>
> t.test =
'tt'
如果是子類,子類不繼承父類的__slots__
,__slots__
僅對當前類起作用。
class
gtest
(test)
:pass
t = gtest(
)t.name =
'n't.name
'n'
python科技限制 python 訪問限制
class person object def run self print self.money print run def eat self,food print eat food def init self,name,age,height,weight,money self.name name...
Python訪問限制
我們可以給乙個例項繫結很多屬性,如果有些屬性不希望被外部訪問到怎麼辦?python對屬性許可權的控制是通過屬性名來實現的,如果乙個屬性由雙下劃線開頭 該屬性就無法被外部訪問。看例子 class person object def init self,name self.name name self....
Python 訪問限制
內部屬性不被外部訪問,可以把屬性的名稱前加上兩個下劃線 在python中,例項的變數名如果以 開頭,就變成了乙個私有變數 private 只有內部可以訪問,外部不能訪問 class student object def init self,name,score self.name name self...