1. Adding Properties dynamically
classLang (object):def __init__(Self,name,score): Self.name=name Self.score=scoredefLanginfo (self):Print '%s:%s'%(self.name,self.score) lang1=lang ('Python','8.5') Lang1.rank=4PrintLang1.rank
Operation Result:
2. Dynamic Add method
fromTypesImportMethodtypeclassLang (object):def __init__(Self,name,score): Self.name=name Self.score=scoredefLanginfo (self):Print '%s:%s'%(self.name,self.score) lang1=lang ('Python','8.5')defGetRank (self):return4Lang1.getrank=Methodtype (Getrank,lang1,lang)PrintLang1.getrank ()
Operation Result:
This method only gives the instance lang1, dynamically adds the method
fromTypesImportMethodtypeclassLang (object):def __init__(Self,name,score): Self.name=name Self.score=scoredefLanginfo (self):Print '%s:%s'%(self.name,self.score) lang1=lang ('Python','8.5') Lang2=lang ('C','9')defGetRank (self):return4Lang1.getrank=Methodtype (Getrank,lang1,lang)PrintLang2.getrank ()
Operation Result:
To add a method to a class:
fromTypesImportMethodtypeclassLang (object):def __init__(Self,name,score): Self.name=name Self.score=scoredefLanginfo (self):Print '%s:%s'%(self.name,self.score) lang1=lang ('Python','8.5') Lang2=lang ('C','9')defGetRank (self):return4Lang.getrank=Methodtype (Getrank,none,lang)PrintLang2.getrank ()
Operation Result:
3. Restrict Class attribute __slots__
#__slots__ Use fromTypesImportMethodtypeclassLang (object):__slots__=('name','score','Rank') def __init__(Self,name,score): Self.name=name Self.score=scoredefLanginfo (self):Print '%s:%s'%(self.name,self.score) lang1=lang ('Python','8.5') Lang1.rank=4Lang1.desc=' Simple'PrintLang1.rank
Operation Result:
Python __slots__ using the detailed