python類對象動態添加屬性和方法


class Person(): #創建一個類
    def __init__(self,name): #定義初始化信息。
        self.name = name 
li = Person('')  #實例化Person('李'),給變量li
li.age = 20  #再程序沒有停止下,將實例屬性age傳入。動態語言的特點。
Person.age = None  #這里使用類名來創建一個屬性age給類,默認值是None。Python支持的動態屬性添加。
def eat(self): #定義一個方法,不過這個方法再類之外。
    print('%s正在吃東西。。'%self.name) 
import types  #動態添加方法需要使用tpyes模塊。
li.eat = types.MethodType(eat,li) #使用types.MethodType,將函數名和實例對象傳入,進行方法綁定。並且將結果返回給li.eat變量。實則是使用一個和li.eat方法一樣的變量名用來調用。
li.eat() #調用外部方法eat()方法。
 
@staticmethod  #定義靜態方法。
def test():  #定義靜態方法,靜態方法可以不用self參數。
    print('這是一個靜態方法。')
Person.test = test  #使用類名.方法名 = test的形式來方便記憶和使用,Person.test其實只是一個變量名,沒有特殊的含義。
Person.test()  #調用test方法。
 
@classmethod  #類方法
def test(cls): 
    print('這是一個類方法。')
Person.test = test #定義一個類屬性等於方法名。
Person.test() #調用方法。
 
class test(object): #定義一個類。
    __slots__ = ('name','age')
#使用slots來將屬性固定,不能進行動態添加修改

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM