python类对象动态添加属性和方法

Posted Mars.wang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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来将属性固定,不能进行动态添加修改

 

以上是关于python类对象动态添加属性和方法的主要内容,如果未能解决你的问题,请参考以下文章

17有关python面向对象编程的提高多继承多态类属性动态添加与限制添加属性与方法@property

Python的动态添加属性与方法

细说python类2——类动态添加方法和slots(转)

python python代码的继承方法重写及动态语言

python python代码的继承方法重写及动态语言

python python代码的继承方法重写及动态语言