python3 - 动态添加属性以及方法

给实例动态添加方法,需引入types模块,用其的MethodType(要绑定的方法名,实例对象)来进行绑定;给类绑定属性和方法,可以通过  实例名.方法名(属性名) = 方法名(属性值)  来进行绑定。给类添加方法,通过@classmethod;给类添加静态方法通过@staticmethod
import types

#定义了一个类class Person(object):    num = 0    def __init__(self, name = None, age = None):        self.name = name        self.age = age    def eat(self):        print("eat food")

#定义一个实例方法def run(self, speed):    print("%s在移动, 速度是 %d km/h"%(self.name, speed))

#定义一个类方法@classmethoddef testClass(cls):    cls.num = 100

#定义一个静态方法@staticmethoddef testStatic():    print("---static method----")

#创建一个实例对象P = Person("老王", 24)#调用在class中的方法P.eat() # eat food

#给这个对象添加实例方法P.run = types.MethodType(run, P)#调用实例方法P.run(180) # 老王在移动, 速度是 180 km/h

#给Person类绑定类方法Person.testClass = testClass#调用类方法print(Person.num) # 0Person.testClass() print(Person.num)  # 100

#给Person类绑定静态方法Person.testStatic = testStatic#调用静态方法Person.testStatic() # ---static method----
时间: 2024-10-05 08:41:51

python3 - 动态添加属性以及方法的相关文章

JS内置对象的原型不能重定义?只能动态添加属性或方法?

昨天马上就快下班了,坐在我对面的同事突然问我一个问题,我说“爱过”,哈哈,开个玩笑.情况是这样的,他发现JS的内置对象的原型好像不能通过字面量对象的形式进行覆盖, 只能动态的为内置对象的原型添加属性或方法,下面那个具体的例子说明: var arr=[]; Array.prototype={ push:function(){ alert("1"); } }; arr.push(); //没有任何输出 有人可能会说了“你先定义的arr,后来又修改了Array.prototype,这时Arr

Python3动态添加属性,删除属性,判断属性函数

动态添加属性是指在类的外面给对象动态绑定属性,添加的方法有两种:1.直接绑定到对象上,例如:p.name="Tom"2.使用setattr函数:setattr(p,'name','Tom')判断对象是否拥有某个属性:hasattr(p,'name'),返回布尔值:也可以用来判断对象是否拥有某个方法删除某个属性:del关键字:del p.namedelattr函数:delattr(p,'name') 原文地址:https://blog.51cto.com/13560219/2479011

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): #定义一个方法,不过这个方法再

iOS动态性:动态添加属性的方法——关联(e.g. 向Category添加属性)

想到要如何为所有的对象增加实例变量吗?我们知道,使用Category可以很方便地为现有的类增加方法,但却无法直接增加实例变量.不过从Mac OS X v10.6开始,系统提供了Associative References,这个问题就很容易解决了.这种方法也就是所谓的关联(association),我们可以在runtime期间动态地添加任意多的属性,并且随时读取.所用到的两个重要runtime API是: 1 OBJC_EXPORT void objc_setAssociatedObject(id

【原】iOS中动态添加属性的方法——关联(e.g. 向Category添加成员变量)

想到要如何为所有的对象增加实例变量吗?我们知道,使用Category可以很方便地为现有的类增加方法,但却无法直接增加实例变量.不过从Mac OS X v10.6开始,系统提供了Associative References,这个问题就很容易解决了.这种方法也就是所谓的关联(association),我们可以在runtime期间动态地添加任意多的属性,并且随时读取.所用到的两个重要runtime API是: OBJC_EXPORT void objc_setAssociatedObject(id o

Python-动态添加属性和方法

class Person(): Country='CN' def __init__(self,nm) self.nm=nm 动态添加实例属性及实例方法: p=Person() p.age=18 #直接赋值,动态添加实例属性 def set_age(self,age) #定义带self变量的函数 self.age=age def set_nm(self,nm) #定义带self变量的函数 self.nm=nm from types import MethodType p.set_age=Metho

python 动态给实例添加属性和方法并使用__slots__

from types import MethodType #创建一个空类class Person(object): __slots__ = ("name", "age", "speak") per = Person()#动态添加属性,这体现了动态语言的特点(灵活)per.name = "tom"print(per.name)#动态添加方法'''def say(self): print("my name is &quo

JavaScript自定义事件,动态添加属性

根据事件的不同,可用的自定义方法也不同. document.createEvent('Event'); 实现主要有4个步骤: 1.创建事件. 2.初始化事件(三个参数:事件名,是否起泡,是否取消默认触发) 3.监听事件 4.触发事件 var Evt = document.createEvent('Event');//创建一个事件 Evt.initEvent('inputChangeEvt', true, true);//初始化事件,给定事件名字 window.addEventListener('

prototype为对象添加属性和方法

可以通过prototype来为已经定义好的的"类"添加属性和方法.这里来了解一下prototype的基础知识.prototype是"构造函数"的属性,不是实例的属性. 示例: function HiClass() { this.sayHi = function(){ alert("hi"); } } var obj = new HiClass(); alert(HiClass.prototype);//outputs [object, objec