You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3中如何使用变量通过getattr调用其他文件的属性?

在Python 3中通过变量调用其他文件属性的正确方式

你尝试用getattr结合变量调用其他文件中的属性,但写法有误导致语法错误。你的代码示例如下:

File1.py

class Test:
    def __init__(self, test1, test2):
        self.test1 = test1
        self.test2 = test2

a = Test("test", "test")

File2.py(错误写法)

import File1

def something(name):
    b = getattr(File2.{name}, test1)

错误原因

  • Python不支持{name}这种直接在代码中拼接变量的语法
  • test1未加引号,getattr的第二个参数必须是字符串类型的属性名
  • 模块引用错误,应该使用File1而非File2

正确实现(分两种场景)

场景1:根据变量获取对象的指定属性

如果name是属性名(比如想动态获取test1或test2),直接把name作为getattr的第二个参数:

import File1

def something(name):
    # 从File1的a对象中获取name对应的属性
    b = getattr(File1.a, name)
    # 示例:当name="test1"时,b的值为"test"

场景2:根据变量获取模块中的对象,再取其属性

如果name是File1中定义的对象名(比如想动态获取a这个实例),先通过getattr获取模块中的对象,再访问属性:

import File1

def something(name):
    # 先从File1模块中获取name对应的对象
    target_obj = getattr(File1, name)
    # 再获取该对象的test1属性
    b = target_obj.test1
    # 也可以链式调用:b = getattr(getattr(File1, name), "test1")
    # 示例:当name="a"时,b的值为"test"

内容的提问来源于stack exchange,提问作者foot inc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 03:48:25