python中函数setattr用法

在Python中,setattr()是一个内置函数,用于设置对象的属性,它接受三个参数:对象、属性名和属性值,如果属性名不存在于对象中,setattr()会创建一个新的属性并设置其值,如果属性名已经存在,setattr()会更新该属性的值。setattr()函数的用法如下:

python中函数setattr用法
(图片来源网络,侵删)
setattr(object, attribute, value)

object:表示要设置属性的对象。

attribute:表示要设置的属性名,可以是字符串或符号。

value:表示要设置的属性值。

下面通过几个示例来详细讲解setattr()函数的用法。

示例1:创建一个类,并使用setattr()设置属性

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
p = Person("张三", 25)
print("原始属性:", p.__dict__)
setattr(p, "name", "李四")
setattr(p, "age", 30)
setattr(p, "gender", "男")
print("更新后的属性:", p.__dict__)

输出结果:

原始属性: {'name': '张三', 'age': 25}
更新后的属性: {'name': '李四', 'age': 30, 'gender': '男'}

在这个示例中,我们首先创建了一个Person类,然后实例化一个对象p,接着,我们使用setattr()函数分别设置nameagegender属性,我们打印出对象p的属性字典,可以看到属性已经被成功设置。

示例2:动态添加方法

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
def say_hello(self):
    print("Hello, my name is", self.name)
p = Person("张三", 25)
print("原始方法:", [func for func in dir(p) if callable(getattr(p, func))])
setattr(p, "say_hello", say_hello)
print("更新后的方法:", [func for func in dir(p) if callable(getattr(p, func))])
p.say_hello()

输出结果:

原始方法: ['__init__']
更新后的方法: ['__init__', 'say_hello']
Hello, my name is 张三

在这个示例中,我们首先创建了一个Person类,然后实例化一个对象p,接着,我们定义了一个say_hello方法,我们使用setattr()函数将say_hello方法添加到对象p中,我们打印出对象p的方法列表,可以看到say_hello方法已经被成功添加,我们调用p.say_hello()方法,输出了预期的结果。

总结一下,setattr()函数在Python中是一个非常实用的内置函数,它可以帮助我们动态地设置对象的属性和方法,在实际开发中,我们可以利用这个函数来实现一些灵活的功能,例如动态添加属性和方法、修改已有属性的值等,希望本文能够帮助你更好地理解setattr()函数的用法。

原创文章,作者:酷盾叔,如若转载,请注明出处:https://www.kdun.com/ask/287340.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
酷盾叔订阅
上一篇 2024-03-01 17:05
下一篇 2024-03-01 17:06

相关推荐

  • python 实例化属性

    在Python中,实例化属性通常指的是在类的实例(对象)上动态地添加属性,这些属性不同于类定义时声明的属性,它们是在运行时根据需要创建的,以下是关于如何在Python中实例化属性的详细技术教学。理解类和实例在深入实例化属性之前,我们需要理解Python中的类(Class)和实例(Instance)。1、类(Class): 是对象的蓝图……

    2024-03-04
    0176

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入