屬性和方法的動態繫結和限制

2022-05-07 07:42:10 字數 1547 閱讀 5671

定義了乙個class,建立了乙個class的例項後,我們可以給該例項繫結任何屬性和方法,這就是動態語言的靈活性。先定義class:

給例項繫結乙個屬性:

給例項繫結乙個方法:

只是繫結這個單獨的物件上,同類的其他例項化的物件的並沒有受到影響。

給類繫結乙個方法:

class

person:

pass

defset_class1(cls, class1):

print("

給類繫結了乙個類方法")

cls.class1 =class1

defset_gender(self, gender):

print("

給類繫結了乙個一般方法")

self.gender =gender

person.set_class=methodtype(set_class1,person)

person.set_gender=methodtype(set_gender,person)

person.set_class("大一

")person.set_gender("男

看來給類繫結乙個一般方法也可以。。哈哈 其物件例項物件也能共享

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

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

class

dog(object):

__slots__ = ('

name

', '

age') #

用tuple定義允許繫結的屬性名稱

d = dog() #

建立新的例項

d.name = '

michael'#

繫結屬性'name'

d.age = 25 #

繫結屬性'age'

d.score = 99 #

繫結屬性'score

Python動態繫結屬性和方法

當我們定義了乙個 class,建立了乙個 class 的例項後,我們可以給該例項繫結任何屬性和方法,也可以給類繫結任何屬性和方法,這就是動態語言的靈活性。給例項繫結屬性和方法,每個例項之間新增的部分是互不干擾的。1.先來看乙個方法 methodtype 如果我們在模組中定義乙個方法,而不是在類中定義...

動態繫結屬性和方法 封裝 繼承

class student def init self,name,age self.name name self.age age defeat self print self.name 在吃飯 stu1 student 張三 20 stu2 student 李四 30 print id stu1 p...

Python 動態屬性方法的新增和限制新增屬性

在沒有定義乙個屬性的時候,我們可以動態的定義乙個屬性或者方法。from types import methodtype class person pass if name main p person p.name laobi print p.name f 學習 python venv scripts...