python 类对象和实例对象动态添加方法

 1 class Person():
 2     def __init__(self, name):
 3         self.name = name
 4
 5
 6 def print_name(self):
 7     print(self.name)
 8
 9 p = Person(‘Li‘)
10 import types
11 p.print_name = types.MethodType(print_name, p)    # 绑定函数到对象
12 p.print_name()
13
14
15 @staticmethod
16 def print_abc():
17     print(‘abc‘)
18
19 Person.print_abc = print_abc
20 Person.print_abc()
21
22
23 @classmethod
24 def print_123(cls):
25     print(‘123‘)
26
27 Person.print_123 = print_123
28 Person.print_123()

原文地址:https://www.cnblogs.com/gundan/p/8151177.html

时间: 2024-11-08 17:23:17

python 类对象和实例对象动态添加方法的相关文章

python—类对象和实例对象的区别

最近在对RF的通讯层的模块进行封装,需要将之前放在类似main里面的一个方法,如下所示:这段代码是开发提供,用于接口测试,模拟底层通讯,具体的通讯是在dll内,python这边只是做了个封装让RF进行调用.这段通讯层的代码实质上做了五件事: 第一:加载dll: 第二:初始化dll内的通讯参数: 第三:与服务器进行连接,创建session 第四:把数据senbuffer通过sessionManger发送给服务器 第五:取得的数据返回recibuffer def testlogin(ip,port,

python中类对象、实例对象、类属性、实例属性、类方法、实例方法、静态方法

类对象.类属性与实例对象.实例属性的区别 在Python中一切皆是对象,类是一个特殊的对象即类对象,描述类的属性称为类属性.类属性在内存中只有一份,在__init__外部定义. 通过类创建的对象称为实例对象,描述实例对象的属性称为实例属性.实例属性在各自对象的内存中都保存一份,在__init__方法内部定义. 实例方法.类方法.静态方法的区别 这三种方法都是保存在类的内存中,调用者不同. 实例方法由对象调用,至少一个self参数,self代表对象的引用. 类方法有类调用,至少一个cls参数,并且

组合,Mixin,类、类对象、实例对象

1.组合,将几个横向关系的组合在一起.所谓的组合就是将类的实例化放到新类里面,那么就将旧类组合进去了. class Turtle: def __init__(self, x): # 注意 init 前面必须双下划线 self.num = x class Fish: def __init__(self, x): self.num = x class Pool: def __init__(self, x, y): self.turtle = Turtle(x) # Pool类中实例化Turtle对象

python面向对象中类对象、实例对象、类变量、实例变量、类方法、实例方法、静态方法

1. 类对象和实例对象 Python中一切皆对象,Python类本身也是一种对象,类定义完成后,会在当前作用域中定义一个以类名为名字的命名空间.类对象具有以下两种操作: 可以通过"类名()"的方式实例化一个对象. 可以通过"类名.类属性"的方式来访问一个类属性. 如果说类时一种概念性的定义,是一种类别,那么实例对象就是对这一类别的具体化.实例化,即实例化对象是类对象实例化之后的产物. class Person:# 声明一个类对象 pass p1 = Person()

给python类动态添加方法(method)

群里有人问如何做到 def foo(): pass class Bar(object): pass Bar.set_instance_method(foo) b = Bar() b.foo() 这个其实还是比较简单的, 只要写个函数给类设置属性即可, 可根据需求是否用函数包装下, 或者用staticmethod这个decorator: import functools def foo(): print 'hello world' class Bar(object): def __init__(s

构造函数,原型对象,实例对象

一.构造函数,原型对象,实例对象 1.1 基本概念 1.对象: 属性和方法的集合,即变量和函数的封装. 调用构造函数产生的实例对象, 每个对象都有一个__proto__属性,指向这个对象的构造函数的原型对象. 2.构造器函数: 用于创建对象的函数,通过new关键字生成对象. 函数名一般首字母大写的. 每创建一个函数, 该函数都会自动带有一个prototype属性.该属性是一个指针,指向一个对象,该对象称之为原型对象(后期我们可以使用这个原型对象帮助我们在js中实现继承) 3.原型对象: 默认有一

JS面向对象篇二、什么是原型?原型对象与实例对象、构造函数的关系及相关方法

本文内容: 1.构造函数.原型对象与实例对象之间的关系: 2.isPrototypeOf()和Object.getPrototypeOf(); 3.实例对象上与原型对象上同名的属性处理: 4.hasOwnProperty()方法和in操作符判断属性来自实例对象本身还是它的原型对象: 5.for-in.Object.keys()和Object.getOwnPropertyNames()方法获取实例对象或者原型对象上的属性: 6.需注意的特殊问题 构造函数.原型对象与实例对象 function Pe

使用runtime给类动态添加方法并调用 - class_addMethod

上手开发 iOS 一段时间后,我发现并不能只着眼于完成需求,利用闲暇之余多研究其他的开发技巧,才能在有限时间内提升自己水平.当然,“其他开发技巧”这个命题对于任何一个开发领域都感觉不找边际,而对于我来说,尝试接触 objc/runtime 不失为是开始深入探索 iOS 开发的第一步. 刚了解 runtime 当然要从比较简单的 api 开始,今天就罗列整理一下 class_addMethod 的相关点: 首先从文档开始. /** * Adds a new method to a class wi

Runtime(动态添加方法)

A问:  有没有使用过performSelector,什么时候使用?动态添加方法的时候使用过?怎么动态添加方法?用runtime?为什么要动态添加方法? B:Runtime(动态添加方法):OC都是懒加载机制,只要一个方法实现了,就会马上添加到方法列表中. app:免费版,收费版 QQ,微博,直播等等应用,都有会员机制 // 任何方法默认都有两个隐式参数,self,_cmd // 什么时候调用:只要一个对象调用了一个未实现的方法就会调用这个方法,进行处理 // 作用:动态添加方法,处理未实现 +

python\类名称空间和对象名称空间

1 类名称空间 创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性 而类的良好总属性:数据属性和函数属性 其中类的数据属性是共享给所有对象 print(id(g1.camp))     #引用的地址是一样的 print(id(Garen.camp)) 输出结果为: 364617767096 364617767096 其中类的函数属性是绑定到所有对象 print(id(g1.attack))      #两个引用地址不一样 print(id(Garen.attac