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 " + self.name)per.speak = sayper.speak(per)‘‘‘def say(self):    print("my name is " + self.name)per.speak = MethodType(say, per)per.speak()

#思考:如果我们想要限制实例的属性怎么办?#比如,只允许给对象添加name,age,height,weight属性

#解决:定义类的时候,定义一个特殊的属性(__slots__),可以限制动态添加的属性

per.height = 170print(per.height)

原文地址:https://www.cnblogs.com/pygo/p/12322590.html

时间: 2024-10-21 18:16:20

python 动态给实例添加属性和方法并使用__slots__的相关文章

python动态获取对象的属性和方法 (转载)

首先通过一个例子来看一下本文中可能用到的对象和相关概念. #coding:utf-8 import sys def foo():pass class Cat(object): def __init__(self, name='Kitty'): self.name = name def sayHi(self): print self.name, 'says Hi!' cat = Cat() print Cat.sayHi print cat.sayHi 有时候我们会碰到这样的需求,需要执行对象的某

python动态获取对象的属性和方法

http://blog.csdn.net/kenkywu/article/details/6822220首先通过一个例子来看一下本文中可能用到的对象和相关概念.01     #coding: UTF-802     import sys #  模块,sys指向这个模块对象03     import inspect04     def foo(): pass # 函数,foo指向这个函数对象05      06     class Cat(object): # 类,Cat指向这个类对象07    

Python的实例定属性和方法或类绑定方法

一.给实例对象绑定属性和方法:1.给实例绑定属性:先定义一个Student类 #!/usr/bin/python class Student(object): pass 然后绑定属性: s = Student() s.name = 'AAA' # 动态给实例绑定一个属性 print(s.name)#输出AAA 2.给实例绑定方法:先定义一个方法 def add(self,a,b): self.a = a self.b = b return self.a +self.b 然后绑定方法: Metho

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

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

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

prototype为对象添加属性和方法

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

【JavaScript】浅析JavaScript对象如何添加属性和方法

向JavaScript类中添加属性和方法,最直观的做法就是在类中定义属性和方法.JavaScript是一门弱语言,除了直接定义还可以用prototype来添加. 下面介绍从外部向JavaScript添加属性和方法的四种方法,首先定义一个类 function MyClass(){} 1,使用类名添加属性 MyClass.prototype.myname="吴兴国01"; 2,使用类名添加方法 MyClass.prototype.myfunc=function(){alert("

iOS 运行时添加属性和方法

原文链接http://blog.csdn.net/meegomeego/article/details/18356169第一种:runtime.h里的方法 BOOL class_addProperty(Class cls,constchar*name,constobjc_property_attribute_t*attributes,unsignedint attributeCount) #include <objc/runtime.h> #import <Foundation/Foun

Yii2 文本框前加图标 input 添加属性的方法

<?= $form->field($model, 'username', [ 'inputTemplate' => '<div class="input-group"><span class="input-group-addon">@</span>{input}</div>', ])?> 添加属性的方法(注意inputOptions的使用): <?= $form->field($mo