1. 程式人生 > >python3 - 動態添加屬性以及方法

python3 - 動態添加屬性以及方法

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 - 動態添加屬性以及方法