python写动态_Python实现动态添加属性和方法操作示例

本文实例讲述了Python实现动态添加属性和方法操作。分享给大家供大家参考,具体如下:

# -*- coding:utf-8 -*-

#!python3

class Person():

def __init__(self, name, age):

self.name = name

self.age = age

p1 = Person('ff', '28')

print(p1.name, p1.age)

# 给实例对象动态添加sex属性

p1.sex = 'female'

print(p1.sex)

# 给类动态添加属性

Person.height = None

print(Person.height)

p1.height = '155'

print(p1.height)

# 动态定义一个方法

def run(self, speed):

print('run with %d speed' % speed)

# 给实例绑定方法

import types

p1.run = types.MethodType(run, p1)

p1.run(30)

# Person.run = run # 运行错误

# Person.run(4)

@classmethod

def run2(a, speed):

print('run with %d m/s' % speed)

# 给类动态绑定方法

Person.run2 = run2 # 给类绑定的方法, 需加修饰器 @classmethod, 标定其为类方法,可被类添加

Person.run2(4)

p1.run2(5) # 类的实例对象也可调用类动态添加的方法

@staticmethod

def eat():

print('eat---')

Person.eat = eat # 类可添加静态方法, 定义静态方法时,需加修饰器@staticmethod

Person.eat()

p1.eat() # 实例对象同样可调用类动态添加的静态方法

del p1.name # del 删除属性

delattr(p1, 'sex')

print(p1.name, p1.sex)

运行结果:

ff 28

female

None

155

run with 30 speed

run with 4 m/s

run with 5 m/s

eat---

eat---

Traceback (most recent call last):

File "/home/python/Desktop/test/12_动态语言.py", line 41, in

print(p1.name, p1.sex)

AttributeError: 'Person' object has no attribute 'name'

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

本文标题: Python实现动态添加属性和方法操作示例

本文地址: http://www.cppcns.com/jiaoben/python/235677.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值