python限定類屬性的類屬性 slots

2021-09-27 08:14:19 字數 1185 閱讀 1691

__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 中的是例項屬性,也是通過方法定義的,是跟著例項物件的 寫在...