首页 > 编程 > Python > 正文

Python实现动态添加属性和方法操作示例

2020-01-04 14:45:31
字体:
来源:转载
供稿:网友

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

# -*- coding:utf-8 -*-#!python3class Person():  def __init__(self, name, age):    self.name = name    self.age = agep1 = Person('ff', '28')print(p1.name, p1.age)# 给实例对象动态添加sex属性p1.sex = 'female'print(p1.sex)# 给类动态添加属性Person.height = Noneprint(Person.height)p1.height = '155'print(p1.height)# 动态定义一个方法def run(self, speed):  print('run with %d speed' % speed)# 给实例绑定方法import typesp1.run = types.MethodType(run, p1)p1.run(30)# Person.run = run # 运行错误 # Person.run(4)@classmethoddef run2(a, speed):  print('run with %d m/s' % speed)# 给类动态绑定方法Person.run2 = run2    # 给类绑定的方法, 需加修饰器 @classmethod, 标定其为类方法,可被类添加Person.run2(4)p1.run2(5)       # 类的实例对象也可调用类动态添加的方法@staticmethoddef eat():  print('eat---')Person.eat = eat    # 类可添加静态方法, 定义静态方法时,需加修饰器@staticmethodPerson.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 <module>
    print(p1.name, p1.sex)
AttributeError: 'Person' object has no attribute 'name'

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


注:相关教程知识阅读请移步到python教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表