首頁/ 娛樂/ 正文

python進階教程動態語言與靜態語言的區別

__slots__

現在我們終於明白了,動態語言與靜態語言的不同

動態語言:可以在執行的過程中,修改程式碼

靜態語言:編譯時已經確定好程式碼,執行過程中不能修改

如果我們想要限制例項的屬性怎麼辦?比如,只允許對Person例項新增name和age屬性

為了達到限制的目的,Python允許在定義class的時候,定義一個特殊的__slots__變數,來限制該class例項能新增的屬性:

>>> class Person(object):

__slots__ = (“name”, “age”)

>>> P = Person()

>>> P。name = “老王”

>>> P。age = 20

>>> P。score = 100

Traceback (most recent call last):

File “”, line 1, in

AttributeError: Person instance has no attribute ‘score’

>>>

注意:

使用__slots__要注意,__slots__定義的屬性僅對當前類例項起作用,對繼承的子類是不起作用的

In [67]: class Test(Person):

。。。: pass

In [68]: t = Test()

In [69]: t。score = 10

python進階教程動態語言與靜態語言的區別

相關文章

頂部