python3 - 動態添加屬性以及方法
阿新 • • 發佈:2017-08-22
pri 類方法 elf self. style 綁定屬性 -s 綁定 assm
給實例動態添加方法,需引入types模塊,用其的MethodType(要綁定的方法名,實例對象)來進行綁定;
給類綁定屬性和方法,可以通過 實例名.方法名(屬性名) = 方法名(屬性值) 來進行綁定。
給類添加方法,通過@classmethod;給類添加靜態方法通過@staticmethod
import types
#定義了一個類
class Person(object):
num = 0
def __init__(self, name = None, age = None):
self.name = name
self.age = age
def eat(self):
print("eat food")
#定義一個實例方法
def run(self, speed):
print("%s在移動, 速度是 %d km/h"%(self.name, speed))
#定義一個類方法
@classmethod
def testClass(cls):
cls.num = 100
#定義一個靜態方法
@staticmethod
def testStatic():
print("---static method----")
#創建一個實例對象
P = Person("老王", 24)
#調用在class中的方法
P.eat() # eat food
#給這個對象添加實例方法
P.run = types.MethodType(run, P)
#調用實例方法
P.run(180) # 老王在移動, 速度是 180 km/h
#給Person類綁定類方法
Person.testClass = testClass
#調用類方法
print(Person.num) # 0
Person.testClass()
print(Person.num) # 100
#給Person類綁定靜態方法
Person.testStatic = testStatic
#調用靜態方法
Person.testStatic() # ---static method----
python3 - 動態添加屬性以及方法