Python基础知识:类的动态添加方法

**Python基础知识:类的动态添加方法

*类中有三种方法,实例方法,静态方法和类方法,三种方法的区别如下:
3.1 添加实例方法
复制代码
import types

class Person(object):
def init(self, newName, newAge):
self.name = newName
self.age = newAge

def eat(self):
    print("---正在吃---")

    1
    2

def run(self):
print("—正在跑—")

zhangsan = Person(“张三”, 18)
zhangsan.eat() # —正在吃—
zhangsan.run = types.MethodType(run, zhangsan) # 类对象zhangsan动态添加对象方法run()
zhangsan.run() # —正在跑—

lisi = Person(“李四”, 28)
lisi.eat() # —正在吃—
lisi.run() # ‘Person’ object has no attribute ‘run’
复制代码
由以上代码可知,Person类有一个方法:eat()方法。通过[types.MethodType(方法名, 对象名)]给类对象zhangsan动态添加了对象方法run(),同理,Person的另一个类对象lisi不能调用这个方法

注:通过对象名添加的对象方法,只有这个对象能使用

3.2 添加静态方法
复制代码
class Person(object):
def init(self, newName, newAge):
self.name = newName
self.age = newAge

def eat(self):
    print("---正在吃---")

    1
    2

@staticmethod
def staticRun():
print("—正在跑—")

Person.staticRun = staticRun # 类Person动态添加静态方法staticRun()

Person.staticRun() # —正在跑—

zhangsan = Person(“张三”, 18)
zhangsan.eat() # —正在吃—
zhangsan.staticRun() # —正在跑—

lisi = Person(“李四”, 28)
lisi.eat() # —正在吃—
lisi.staticRun() # —正在跑—
复制代码
由以上代码可知,通过[类名.静态方法名]给类Person动态添加了静态方法staticRun(),Person类的Person的类对象zhangsan和lisi都能调用这个方法

注:通过类名添加的静态方法,这个类及这个类的所有对象都能使用

3.3 添加类方法
复制代码
class Person(object):
def init(self, newName, newAge):
self.name = newName
self.age = newAge

def eat(self):
    print("---正在吃---")

    1
    2

@classmethod
def classRun(cls):
print("—正在跑—")

Person.classRun = classRun # 类Person动态添加类方法classRun()

Person.classRun() # —正在跑—

zhangsan = Person(“张三”, 18)
zhangsan.eat() # —正在吃—
zhangsan.classRun() # —正在跑—

lisi = Person(“李四”, 28)
lisi.eat() # —正在吃—
lisi.classRun() # —正在跑—
复制代码
由以上代码可知,通过[类名.类方法名]给类Person动态添加了类方法classRun(),Person类的Person的类对象zhangsan和lisi都能调用这个方法

注:通过类名添加的类方法,这个类及这个类的所有对象都能使用
---------------------
作者:柯__南
来源:CSDN
原文:https://blog.csdn.net/weixin_43347512/article/details/86171254
版权声明:本文为博主原创文章,转载请附上博文链接!

posted @ 2019-07-20 09:20  天涯海角路  阅读(182)  评论(0)    收藏  举报