## 动态添加属性

class Person:
def __init__(self,name):
self.name = name

# 1.通过对象.属性名称来操作
p = Person('KTModel')
p.address = '深圳'
print(p.address)

# 2.通过 setattr(对象,属性名称,这个属性名的值)方法
if not hasattr(p,"phone"):
setattr(p,"phone","187xxx")
print(p.phone)

## 动态添加实例方法: 使用types.ModuleType
import types

class Father(object):
def __init__(self,name):
self.name = name

def son(self):
print('我是{}的son'.format(self.name))

fa = Father('Father')
fa.son = types.MethodType(son,fa)
fa.son()

## 动态添加动态类:

class Apple(object):
country = 'China'
def __init__(self,name):
self.name = name

@classmethod
def run(cls):
print('Apple生产地是属于哪里:{}'.format(cls.country))

Apple.run = run
Apple.run()

## 动态添加静态类:

class Origin(object):
country = 'China'
def __init__(self,name):
self.name = name

@staticmethod
def run():
print('Origin生产地是属于哪里在中国')

Origin.run = run
Origin.run()

# 动态删除属性和方法:
# 1. del 对象.属性名
# 2. delattr(对象,"属性名")

# __slots__魔术变量:
# 有时候我们想指定某个类的对象,只能使用我指定的这些属性,不能随便添加其他的属性,那么这时候就可以使用__slots__魔术变量。
# 这个魔术变量是一个列表或者一个元组,里面存放属性的名字,以后在对象外面,就只能添加这个魔术变量中指定的属性,不能添加其他属性。
# 示例代码如下:

class Mother(object):
__slots__ = ("name","age","address")
def __init__(self,name):
self.name = name

mo = Mother('Teacher')
mo.Hua = '666'
print(mo.Hua) # 报错

最新文章

  1. java基础知识(六)日期处理
  2. opencv的学习笔记2
  3. NPOI系列
  4. windows中快速停掉占用某端口的进程的方法
  5. android之发送短信程序
  6. USACO Section 2.2: Party Lamps
  7. SPOJ LCS2 后缀自动机
  8. iOS Foundation 框架概述文档:常量、数据类型、框架、函数、公布声明
  9. 使用AES加密的帮助类
  10. iOS 搜索框控件 最简单的dome
  11. IIS发布WebService的一些常见问题
  12. WOW.js – 让页面滚动更有趣
  13. Ethereum(1)—— 基本介绍
  14. <笔记>TP5的分页传递额外参数
  15. StringUtils工具类常用方法汇总(判空、转换、移除、替换、反转)
  16. learning at command AT+CIMI
  17. bootstrap 参考文档
  18. sencha touch 类的使用
  19. xUtils框架的使用详解
  20. Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)

热门文章

  1. OSPF-OSPF通用报头
  2. pytest的allure的环境配置
  3. DHCP:IP 并非与生俱来
  4. ORA-19504: failed to create file "/u01/backup/db_0_20190603_1" ORA-27038: created file already exists
  5. 每日三道面试题,通往自由的道路6——JVM
  6. 如何利用Python计算景观指数AI
  7. kubelet分析-pvc扩容源码分析
  8. Docker 镜像针对不同语言的精简策略
  9. 22、lnmp_nginx反向代理(负载均衡)、高可用
  10. 28、windows下通过MSI图形界面方式安装mysql