反射

作用:通过字符串的形式操作对象的属性和方法

getattr

获取指定对象的属性和方法
用法:

变量名 = getattr(对象名, '属性', 默认值)
注:
默认值:当对象中查找不到对应的属性和方法时,进行返回避免报错

获取属性

class User:
    def __init__(self,name,money,age):
        self.name = name
        self.__money = money
        self.age = age

    @property
    def money(self):
        return self.__money

    def get_money(self):
        print(f'用户{self.name},余额{self.__money}')


hz = User('华子', 10000, 20)
# 如果获得到了对象属性,就返回对应属性值,如果没有就返回0
tt = getattr(hz, 'name', 0)
rr = getattr(hz, 'gendter', 0)
print(tt)
print(rr)

获取方法

返回所获取的函数名

class User:
    def __init__(self,name,money,age):
        self.name = name
        self.__money = money
        self.age = age

    @property
    def money(self):
        return self.__money

    def print_money(self):
        print(f'用户{self.name},余额{self.__money}')


hz = User('华子', 10000, 20)

func = getattr(hz,'print_money') # 返回函数名
func()

setattr

设置对象属性值
用法:

setattr(对象名, '属性名', 属性值)
class User:
    def __init__(self,name,money,age):
        self.name = name
        self.__money = money
        self.age = age

    @property
    def money(self):
        return self.__money

    def print_money(self):
        print(f'用户{self.name},余额{self.__money}')


hz = User('华子', 10000, 20)
# 设置name的值为小川
setattr(hz, 'name', '小川')
print(hz.name)

hasattr

判断对象是否存在对应的属性和方法,返回一个bool值
用法:

变量名 = hasattr(对象名, '属性名或方法名')

判断属性

class User:
    def __init__(self,name,money,age):
        self.name = name
        self.__money = money
        self.age = age

    @property
    def money(self):
        return self.__money

    def print_money(self):
        print(f'用户{self.name},余额{self.__money}')


hz = User('华子', 10000, 20)

outcome = hasattr(hz, 'name')
print(outcome)

判断方法

class User:
    def __init__(self,name,money,age):
        self.name = name
        self.__money = money
        self.age = age

    @property
    def money(self):
        return self.__money

    def print_money(self):
        print(f'用户{self.name},余额{self.__money}')


hz = User('华子', 10000, 20)

out = hasattr(hz, 'print_money')
print(out)

delattr

删除对象属性
用法:

delattr(对象名, '对象属性')
class User:
    def __init__(self,name,money,age):
        self.name = name
        self.__money = money
        self.age = age

    @property
    def money(self):
        return self.__money

    def print_money(self):
        print(f'用户{self.name},余额{self.__money}')


hz = User('华子', 10000, 20)

# 删除age这个属性
delattr(hz, 'age')
Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐