怎樣為屬性新增安全保護機制

2021-09-25 22:58:37 字數 1008 閱讀 2691

在python中,預設情況下,建立的類屬性或者例項是可以在類體外進行修改的,如果想要限制其不能進行修改,可以將其設定為私有的。但是呢,如果將它設定為私有的,那麼在類體外也不能獲它的值。如果想要建立乙個可以讀取,但不能修改的屬性,就要用到@property了。

如:

class tvshow:

def __init__(self,show):

self._show=show

@property

def show(self):

return self._show

print('預設:',tvshow.show)

#丟擲異常

print(tvshow.show)

執行結果:

attributeerror: can't set attribute

為屬性設定***就可以屬性進行修改,但是修改的時候要遵守一定的約束,比如:

class tvshow:

list_film=['***','yyy','eee','mmm','jjj']

def __init__(self,show):

self._show=show

@property #將方法轉換為屬性

def show(self):

return self._show #返回私有屬性的值

@show.setter #設定setter方法,讓屬性可修改

def show(self,value):

if value in tvshow.list_film:

else:

self._show='您所選的節目不存在'

tvshow=tvshow('***')

print('您可以從',tvshow.list_film,'中選擇要點播的節目')

tvshow.show='yyy'

print(tvshow.show)

iOS 為分類新增屬性

我們知道分類可以很簡單的新增方法,但是新增屬性卻無能為力,但是我們還是可以通過動run time的associate就可以做到 比如說我要在uimage中新增乙個url屬性 h inte ce uiimage url property nonatomic,copy nsstring url end ...

iOS為Category新增屬性

一般認為category不能新增變數,其實可以使用 dynamic 來動態新增的。即執行時runtime 分類裡面不能新增ivar是因為分類本身並不是乙個真正的類,它並沒有自己的isa。原文出自 1.建立uiviewcontroller的類別並新增幾個屬性 import inte ce uiview...

棧溢位需關閉的安全保護機制

系統環境 linux 4.8.0 36 generic x86 64 distrib description ubuntu 16.04.2 lts gcc ubuntu 5.4.0 6ubuntu1 16.04.4 5.4.0 20160609 關閉棧溢位保護的指令 1.編譯需加上的指令 gcc g...