## 动态添加属性

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) # 报错

Python基础之动态添加属性,方法,动态类,静态类的更多相关文章

  1. python基础之反射内置方法元类

    补充内置函数 isinstance(obj,Foo)   # 判断obj是不是foo的实例 issubclass()      # 判断一个类是不是另一个类的子类 反射 什么是反射? 通过字符串来操作 ...

  2. ios开发runtime学习四:动态添加属性

    #import "ViewController.h" #import "Person.h" #import "NSObject+Property.h& ...

  3. 我的Python学习笔记(四):动态添加属性和方法

    一.动态语言与静态语言 1.1 动态语言 在运行时代码可以根据某些条件改变自身结构 可以在运行时引进新的函数.对象.甚至代码,可以删除已有的函数等其他结构上的变化 常见的动态语言:Object-C.C ...

  4. python动态添加属性和方法

    ---恢复内容开始--- python动态添加属性: class Person(object): def __init__(self,newName,newAge): self.name = newN ...

  5. python 动态添加属性及方法及“__slots__的作用”

    1.动态添加属性 class Person(object): def __init__(self, newName, newAge): self.name = newName self.age = n ...

  6. Python笔记_第三篇_面向对象_8.对象属性和类属性及其动态添加属性和方法

    1. 对象属性和类属性. 我们之前接触到,在类中,我们一般都是通过构造函数的方式去写一些类的相关属性.在第一次介绍类的时候我们把一些属性写到构造函数外面并没有用到构造函数,其实当时在写的时候,就是在给 ...

  7. day_5.26python动态添加属性和方法

    python动态添加属性和方法 既然给类添加⽅法,是使⽤ 类名.⽅法名 = xxxx ,那么给对象添加⼀个⽅法 也是类似的 对象.⽅法名 = xxx '''2018-5-26 13:40:09pyth ...

  8. js对象动态添加属性,方法

    1. 动态添加属性,方法 var object = new Object(); object.name = "name"; object.age = 19; >>> ...

  9. 20170702-变量说明,静态方法,类方法区别,断点调试,fork,yield协程,进程,动态添加属性等。。

    概念: 并行:同时运行 并发:看似同时运行  json后任然中文的问题 import json d = {"名字":"初恋这件小事"} new_d1 = jso ...

随机推荐

  1. MindArmour差分隐私

    MindArmour差分隐私 总体设计 MindArmour的Differential-Privacy模块,实现了差分隐私训练的能力.模型的训练主要由构建训练数据集.计算损失.计算梯度以及更新模型参数 ...

  2. APP测试的主要内容

    一.功能性测试:依据需求相关的文档编写测试用例进行测试 二.兼容性测试 系统版本:Android,ios 分辨率 网络情况 可用工具:testin 三.安装,升级,卸载测试 首次安装,覆盖安装,卸载后 ...

  3. centos7 配置国内yum源

    配置清华大学镜像仓库 URL:https://mirrors.cnnic.cn/ CentOS 镜像使用帮助 https://mirrors.cnnic.cn/help/centos/ 建议先备份 C ...

  4. 【NX二次开发】Block UI 半径尺寸(沿曲线的位置)

    属性说明 常规         类型 描述     BlockID     String 控件ID     Enable     Logical 是否可操作     Group     Logical ...

  5. 【NX二次开发】Block UI 截面构建器

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

  6. 【接口测试】-1.常用的接口测试工具(Postman、soupUI、Jemeter)

      1)  Postman 1.get/post请求--  postman获取用户信息1 get方式:可以直接在url中写入参数 Post方式:请求体可以写到URL或Body的form-data中写参 ...

  7. 复习Spring第四课---Spring对国际化的支持

    其实国际化这东西很少使用,之前也就是粗略的学了下,趁今天有空,拿出来稍微写写.以前学android开发的时候,类似于多语言的版本.差别就是一个是手机打开,一个是浏览器打开,本质是一样的. 在Sprin ...

  8. git 认证问题之一的解决 : http ssh 互换

    场景 使用git 我们经常会遇到 认证失败的情况,有时候确实是搞错了用户名或者密码,还有的时候及时用户名密码用对了也还是认证失败. 此时, 就有可能是下面这个情况. 没有配置 ssh 秘钥, 而用了 ...

  9. Java基础之(一)——从synchronized优化看Java锁概念

    一.悲观锁和乐观锁概念 悲观锁和乐观锁是一种广义的锁概念,Java中没有哪个Lock实现类就叫PessimisticLock或OptimisticLock,而是在数据并发情况下的两种不同处理策略. 针 ...

  10. 35、sudo权限设置

    提示:sudo的介绍在"13.linux中用户和用户组"中有详细介绍: (1)简历里要加上如下项目经验: 服务器用户权限管理改造方案与实施项目 日期: 在了解公司业务流程后,提出权 ...