python动态添加属性(对象属性,类属性)

您所在的位置:网站首页 python动态赋值 python动态添加属性(对象属性,类属性)

python动态添加属性(对象属性,类属性)

2023-07-15 04:45| 来源: 网络整理| 查看: 265

**

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__对子类没有任何限制作用



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3