python 动态添加属性及方法及“__slots__的作用”
1.动态添加属性
class Person(object):
def __init__(self, newName, newAge):
self.name = newName
self.age = newAge laowang = Person("老王", 10000)
print(laowang.name)
print(laowang.age)
laowang.addr = "北京...."
print(laowang.addr) laozhao = Person("老赵", 18)
#print(laozhao.addr) Person.num = 100
print(laowang.num)
print(laozhao.num)
2.动态添加方法
#!/usr/local/bin/python3
# -*- coding:utf-8 -*- import types
class Person(object):
def __init__(self,name,age):
self.name = name
self.age = age def eat(self):
print('---%s正在吃----' %self.name) p1 = Person('p1',100)
#p1.eat = eat #右边的eat指向eat 函数内存地址,赋值给p1对象的eat属性
#p1.eat() #这样调用会报错 ########那样怎么添加呢????
##在开头导入模块types,再用如下方法:
p1.eat = types.MethodType(eat,p1)
p1.eat() #####用法#################
>>> import types
>>> help(types.MethodType)
Help on class method in module builtins:
class method(object)
| method(function, instance)
##############__slots__ 的作用################
In [18]: class Person(object):
...: __slots__ = ("name","age") #####只能添加元祖中定义了的属性,不在元组内的不行
...: In [19]: p1 = Person() In [20]: p1.name = 'haha' In [21]: p1.addr = 'beijing'
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-21-be5d7a142f3a> in <module>()
----> 1 p1.addr = 'beijing' AttributeError: 'Person' object has no attribute 'addr'
python 动态添加属性及方法及“__slots__的作用”的更多相关文章
- python动态添加属性和方法
---恢复内容开始--- python动态添加属性: class Person(object): def __init__(self,newName,newAge): self.name = newN ...
- day_5.26python动态添加属性和方法
python动态添加属性和方法 既然给类添加⽅法,是使⽤ 类名.⽅法名 = xxxx ,那么给对象添加⼀个⽅法 也是类似的 对象.⽅法名 = xxx '''2018-5-26 13:40:09pyth ...
- 我的Python学习笔记(四):动态添加属性和方法
一.动态语言与静态语言 1.1 动态语言 在运行时代码可以根据某些条件改变自身结构 可以在运行时引进新的函数.对象.甚至代码,可以删除已有的函数等其他结构上的变化 常见的动态语言:Object-C.C ...
- js对象动态添加属性,方法
1. 动态添加属性,方法 var object = new Object(); object.name = "name"; object.age = 19; >>> ...
- Python笔记_第三篇_面向对象_8.对象属性和类属性及其动态添加属性和方法
1. 对象属性和类属性. 我们之前接触到,在类中,我们一般都是通过构造函数的方式去写一些类的相关属性.在第一次介绍类的时候我们把一些属性写到构造函数外面并没有用到构造函数,其实当时在写的时候,就是在给 ...
- Python基础之动态添加属性,方法,动态类,静态类
## 动态添加属性class Person: def __init__(self,name): self.name = name# 1.通过对象.属性名称来操作p = Person('KTModel' ...
- JS内置对象的原型不能重定义?只能动态添加属性或方法?
昨天马上就快下班了,坐在我对面的同事突然问我一个问题,我说“爱过”,哈哈,开个玩笑.情况是这样的,他发现JS的内置对象的原型好像不能通过字面量对象的形式进行覆盖, 只能动态的为内置对象的原型添加属性或 ...
- python3 - 动态添加属性以及方法
给实例动态添加方法,需引入types模块,用其的MethodType(要绑定的方法名,实例对象)来进行绑定:给类绑定属性和方法,可以通过 实例名.方法名(属性名) = 方法名(属性值) 来进行绑定.给 ...
- Python 之动态添加属性以及方法
import types class Person(object): def __init__(self, newName, newAge): self.name = newName self.age ...
随机推荐
- hdu 4862 KM算法 最小K路径覆盖的模型
http://acm.hdu.edu.cn/showproblem.php?pid=4862 选t<=k次,t条路要经过全部的点一次而且只一次. 建图是问题: 我自己最初就把n*m 个点分别放入 ...
- Realm多线程中的那些坑...
个人在开发中遇到的一些小坑... 可能会持续更新... 1.RealmObject自带线程保护功能.仅仅能在创建它的线程中訪问.在子线程中不能訪问. 也就是说.假设你在主线程中new了一个RealmO ...
- StringUtils方法
org.apache.commons.lang.StringUtils中方法的操作对象是java.lang.String类型的对象,是JDK提供的String类型操作方法的补充,并且是null安全的( ...
- Netty(五):Netty中如何序列化数据
JDK提供了ObjectOutputStream和ObjectInputStream,用于通过网络对POJO的基本数据类型和图进行序列化和反序列化.该API并不复杂,而且可以被应用于任何实现了java ...
- 深入浅出Attribute(二)
上篇里,我们把Attribute“粘”在类的成员方法上show了一把,让Attribute跟大家混了个脸儿熟.中篇里,我们将探讨“究竟什么是Attribute”和“如何创建及使用Attribute”这 ...
- 结缘mac
还记得上一次买MacBookPro.是在去年的7月下旬,记得那次是我大学第一次买电脑,那时候刚准备開始研究android.听stormzhang以及android开发界的大佬们对mac开发androi ...
- 华为云测平台服务再升级!华为M5系列平板调测能力正式上线!
6月1日,华为M5系列平板设备兼容性测试和远程真机调试功能在华为终端开放实验室正式上线!助力您的产品在大屏适配上快人一步! 华为终端开放实验室DevEco平台现已提供基于华为M5系列平板设备的兼 ...
- AOS应用基础平台-模块开发流程
AOS平台简单介绍 AOS应用基础平台基于JavaEE技术体系,以"标准功能可复用.通用模块可配置.行业需求高速开发.异构系统无缝集成"为目标.为软件开发团队提供高效可控.随需应变 ...
- Awesome Vue.js vue.js学习资源链接大全 中文
https://blog.csdn.net/caijunfen/article/details/78216868
- python中的特殊用法
1 别名 from xxx import xxx as xxx;