Python基础之动态添加属性,方法,动态类,静态类
## 动态添加属性
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基础之动态添加属性,方法,动态类,静态类的更多相关文章
- python基础之反射内置方法元类
补充内置函数 isinstance(obj,Foo) # 判断obj是不是foo的实例 issubclass() # 判断一个类是不是另一个类的子类 反射 什么是反射? 通过字符串来操作 ...
- ios开发runtime学习四:动态添加属性
#import "ViewController.h" #import "Person.h" #import "NSObject+Property.h& ...
- 我的Python学习笔记(四):动态添加属性和方法
一.动态语言与静态语言 1.1 动态语言 在运行时代码可以根据某些条件改变自身结构 可以在运行时引进新的函数.对象.甚至代码,可以删除已有的函数等其他结构上的变化 常见的动态语言:Object-C.C ...
- python动态添加属性和方法
---恢复内容开始--- python动态添加属性: class Person(object): def __init__(self,newName,newAge): self.name = newN ...
- python 动态添加属性及方法及“__slots__的作用”
1.动态添加属性 class Person(object): def __init__(self, newName, newAge): self.name = newName self.age = n ...
- Python笔记_第三篇_面向对象_8.对象属性和类属性及其动态添加属性和方法
1. 对象属性和类属性. 我们之前接触到,在类中,我们一般都是通过构造函数的方式去写一些类的相关属性.在第一次介绍类的时候我们把一些属性写到构造函数外面并没有用到构造函数,其实当时在写的时候,就是在给 ...
- day_5.26python动态添加属性和方法
python动态添加属性和方法 既然给类添加⽅法,是使⽤ 类名.⽅法名 = xxxx ,那么给对象添加⼀个⽅法 也是类似的 对象.⽅法名 = xxx '''2018-5-26 13:40:09pyth ...
- js对象动态添加属性,方法
1. 动态添加属性,方法 var object = new Object(); object.name = "name"; object.age = 19; >>> ...
- 20170702-变量说明,静态方法,类方法区别,断点调试,fork,yield协程,进程,动态添加属性等。。
概念: 并行:同时运行 并发:看似同时运行 json后任然中文的问题 import json d = {"名字":"初恋这件小事"} new_d1 = jso ...
随机推荐
- YOLOv3和YOLOv4长篇核心综述(上)
YOLOv3和YOLOv4长篇核心综述(上) 对目标检测算法会经常使用和关注,比如Yolov3.Yolov4算法. 实际项目进行目标检测任务,比如人脸识别.多目标追踪.REID.客流统计等项目.因此目 ...
- 77GHz 和24GHz Radar性能解析
77GHz 和24GHz Radar性能解析 一.77GHz MRR 77GHz MRR Automotive Collision Warning Radar Application MRR – Fo ...
- Python中xml.etree.ElementTree读写xml文件实例
import osimport xml.etree.ElementTree as ET'''Python 标准库中,提供了6种可以用于处理XML的包,本文举实例说明第6种1.xml.dom2.xml. ...
- 【VBA】获取文件夹下所有文本文件
源码: 1 Sub 获取文件夹下所有文本文件() 2 Dim strPath As String 3 strPath = "G:\A\" 4 Dim MyFile As Strin ...
- 10个有趣又能编译为JavaScript的语言,你用过哪些?
现代应用相比普通的网页有不同的要求.但是浏览器是一个有着一套(大部分)固定可用的技术的平台,JavaScript依然是web应用的核心语言:任何需要在浏览器上跑的应用都需要使用这种语言. 我们都知道J ...
- theUnforgiven——项目冲刺
这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/computer-science-class1-2018/ 小组号和队名 8组theUnforgiven ...
- etcd 添加用户,授权特定目录
适用场景 多组共用etcd集群,创建一个新用户.新目录,让这个新用户只有新目录的使用权限. 命令和顺序 创建目录,注意此处是v2 curl -u root:pwd http://host:2379/v ...
- 通过AI识图判断图片是否为小票
先在百度智能云中创建一个应用加入以下标记功能(没有智能云账号可以去创建一个,创建应用也都是些基本操作) 本次只用到标记的功能. 此功能在图像识别下面. 创建应用后,页面会出现平台分配的密钥:API K ...
- 玩转STM32MP157- 在应用层中使用 fbtft
fbtft使用的是framebuffer框架,这种框架将显示设备抽象为帧缓冲区,对framebuffer设备(/dev/fbx(0.1.2..))进行相关操作可以反应到LCD上. 现在尝试下在用户空间 ...
- Linux中curl的用法
一.简介:在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,是一款强大的http命令行工具.支持文件的上传和下载,是综合传输工具. 二.语法:curl [option] [url ...