python类的动态方法是什么_Python基础知识:类的动态添加方法

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

*类中有三种方法,实例方法,静态方法和类方法,三种方法的区别如下:

3.1 添加实例方法

复制代码

import types

class Person(object):

def init(self, newName, newAge):

self.name = newName

self.age = newAge

def eat(self):

print("---正在吃---")

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("---正在吃---")

@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("---正在吃---")

@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都能调用这个方法

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值