__slots__由於python是動態語言,任何例項在執行期都可以動態地新增屬性。
如果要限制新增的屬性,例如,student類只允許新增 name、gender和score 這3個屬性,就可以利用python的乙個特殊的__slots__來實現。
顧名思義,__slots__是指乙個類允許的屬性列表:
class student(object):
__slots__ = ('name', 'gender', 'score')
def __init__(self, name, gender, score):
self.name = name
self.gender = gender
self.score = score
現在,對例項進行操作:
>>> s = student('bob', 'male', 59)
>>> s.name = 'tim' # ok
>>> s.score = 99 # ok
>>> s.grade = 'a'
traceback (most recent call last):
...attributeerror: 'student' object has no attribute 'grade'
__slots__的目的是限制當前類所能擁有的屬性,如果不需要新增任意動態的屬性,使用__slots__也能節省記憶體。
class person(object):__slots__ = ('name', 'gender')
def __init__(self, name, gender):
self.name = name
self.gender = gender
class student(person):
__slots__ = ('score',)
def __init__(self,name,gender,score):
super(student,self).__init__(name,gender)
self.score=score
s = student('bob', 'male', 59)
s.name = 'tim'
s.score = 99
print s.score
python 類屬性 用處 Python類屬性詳解
類屬性1.類定義後就存在,而且不需要例項化 2.類屬性使得相同類的不同例項共同持有相同變數 類屬性例項 attrb.py class testcss cssa class attribe def init self self.a 0 self.b 10 def info self print a s...
Python類屬性,例項屬性
dreamfor的部落格 1.python類資料屬性 定義在類裡面但在函式外面的變數,它們都是靜態的。一段很簡單的 但反應了很多 class a a 1 乙個類裡面有個屬性a a a b a a.a b.a a.a 這個屬效能被例項和類訪問 a.a 2 b.a a.a 改變例項a的屬性a,例項b和類...
Python 類屬性 例項屬性
1.類的三大要素 類名 屬性 方法 屬性又分為例項屬性和類屬性 1 class tool object 2 屬性3 num 045 方法6def init self,new name 7 self.name new name 寫在 init 中的是例項屬性,也是通過方法定義的,是跟著例項物件的 寫在...