python动态添加属性(对象属性,类属性) __slots__对动态添加属性及方法的限制作用
2019-07-02 14:55
232 查看
版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)
**
1,python动态添加属性(对象属性,类属性)
**
1,python是动态类型语言:可以在运行中改变自身结构,动态添加/删除属性和方法,删除函数
2,也是强类型语言:变量的类型可以在运行之后,任意变量,不需要强制转换
动态添加实例属性和类属性的演示如下:
class Person: def __init__(self, name, age): self.name = name self.age = age p = Person("皮皮", 1) # 动态添加属性 # 1,以下是添加实例属性的两种方式 p.address = "义乌" setattr(p, "gender", "男") # 为p对象添加了一个名为gender的属性,存储的值为“男” print("名字是%s 年龄是%d 地址是%s 性别是%s" % (p.name, p.age, p.address, p.gender)) print("名字是%s 年龄是%d 地址是%s 性别是%s" % (p.name, p.age, p.address, getattr(p, "gender"))) # 2,添加对象属性 类名.属性名 Person.CLS_ID = 110 print(p.CLS_ID)
运行结果为:
名字是皮皮 年龄是1 地址是义乌 性别是男 名字是皮皮 年龄是1 地址是义乌 性别是男 110
添加对象方法的演示如下:
import types # 注意必须要先导入types这个模块 class Person: def __init__(self, name, age): self.name = name self.age = age # 动态添加方法 # 1,添加实例方法(也可称为成员方法) def study(self): print("一天不写代码难受!!!") p = Person("皮皮", 1) p1 = Person("彬彬", 18) p.study = types.MethodType(study, p) p.study() # p1.study() 会报错,因为这添加的是对象方法,只能对象p调用
运行结果为:
一天不写代码难受!!!
添加静态方法和类方法的演示如下:
import types # 注意必须要先导入types这个模块 class Person: def __init__(self, name, age): self.name = name self.age = age # 动态添加方法 # 2,添加静态方法 @staticmethod def test(): print("我是静态方法") # 给类添加静态方法 Person.method = test # 注意:这里不能加括号 # 3,添加类方法 @classmethod def testClsMethod(cls): print("我是类方法") Person.method22 = testClsMethod # 注意:这里不能加括号 p = Person("皮皮", 1) p1 = Person("彬彬", 18) # 调用静态方法 p.method() # 对象访问 p1.method() Person.method() # 提倡用类名.的方式去访问静态方法 # 访问类方法 p.method22() p1.method22() Person.method22()
运行结果为:
我是静态方法 我是静态方法 我是静态方法 我是类方法 我是类方法 我是类方法
**
2,__slots__对动态添加属性及方法的限制作用
**
1,__slots__在动态添加属性和方法中,只对类对象进行限制,不对类进行限制
2,__slots__对动态添加类对象的属性和方法进行限制
3,__slots__对子类没有任何限制作用
相关文章推荐
- python语言是动态语言、给类添加属性、方法、静态方法和类方法、__slots__()、python中的生成器、yield的用法
- python语言是动态语言、给类添加属性、方法、静态方法和类方法、__slots__()、python中的生成器、yield的用法
- python通过__slots__限制类实例动态的增加属性、方法
- python动态获取对象的属性和方法
- javascript动态添加、修改、删除对象的属性和方法
- python动态获取对象的属性和方法
- python动态添加属性和方法
- python-14动态添加属性及方法
- 【python】详解类class的通过__slots__限制类实例对象的属性(七)
- Python学习笔记——动态添加属性与方法
- javascript动态添加、修改、删除对象的属性和方法
- python动态获取对象的属性和方法
- javascript动态添加、修改、删除对象的属性和方法
- python动态获取对象的属性和方法 (转载)
- JS动态给对象添加属性和值的实现方法
- python 详解类class的通过__slots__限制类实例对象的属性(七)
- __slots__ Python Class限制添加属性
- python3 位类动态添加方法 import types x=types.MethodType(要添加的方法名,对象名)
- js学习(一)-动态添加、修改、删除对象的属性和方法
- JavaScript---动态添加删除属性与方法和对象构造方法