首页Python【Python内置函数】s...

【Python内置函数】setattr()函数

Python 提供了许多内置函数,这些函数是Python语言的一部分,可以直接在Python程序中使用而无需导入任何模块。

本系列将会陆续整理分享一些的Python内置函数。

文章配套代码获取有以下两种途径:
  • 通过百度网盘获取:
链接:https://pan.baidu.com/s/11x9_wCZ3yiYOe5nVcRk2CQ?pwd=mnsj 提取码:mnsj
  • 前往GitHub获取
https://github.com/returu/Python_built-in_functions





01
简介

setattr() 函数是 Python 中的一个内置函数,用于为对象设置属性。

setattr() 函数的基本语法如下:

setattr(object, name, value)
参数说明:
  • object:要设置属性的对象;
  • name:是要设置的属性名称,以字符串形式提供;
  • value:是要赋给属性的值。

返回值:

setattr() 函数没有返回值(即返回 None)。它的作用是直接在对象上设置或修改指定的属性。

02
使用

下面是一些使用 setattr() 函数的示例:

  • 示例 1:设置对象的属性值

setattr() 函数可以用于任何具有属性的对象,包括类、实例等。如果指定的属性已经存在于 object 中,将会覆盖原有的属性值。

例如,为实例 p 添加一个 age 属性并赋值、修改原有name属性值:

class Person:
    def __init__(self, name):
        self.name = name

p = Person("Alice")

# 设置新属性
setattr(p, 'age', 30)
# 修改现有属性
setattr(p, 'name''Bob')

# 使用 vars() 函数获取类的__dict__ 属性
vars(p)
# 输出: {'name': 'Bob', 'age': 30}


  • 示例 2:设置对象的方法

setattr() 函数可以用于设置对象的任何属性,包括方法。如果要设置对象的方法,可以将方法作为函数对象传递给setattr()

例如,Calculator 类中包含一个add() 方法,然后使用setattr()函数为其添加一个sub()方法:

  • 定义函数sub:定义了一个普通的函数sub,它接受selfxy作为参数;

  • 使用__get__绑定方法:通过sub.__get__(calculator, Calculator)sub函数绑定到calculator实例上,使其成为一个实例方法。__get__方法是Python中用于实现方法绑定的特殊方法;

  • 调用方法:现在calculator实例有了sub方法,可以像调用其他实例方法一样调用它。

class Calculator:
    def add(self, x, y):
        return x + y

calculator = Calculator()

# 定义一个函数来作为 sub 方法
def sub(self, x, y):
    return x - y

# 使用 __get__ 将函数绑定到实例上
setattr(calculator, "sub", sub.__get__(calculator, Calculator))

result1 = calculator.add(5, 3)
result2 = calculator.sub(5, 3)

print(result1)
# 输出: 8
print(result2)
# 输出: 2

本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments