Python中请教一个关于getattr函数使用的问题,感谢!

class A:

def init(self):

self.name = ‘test’

def method(self):

print(“method print”)


Instance = A()

print(getattr(A, ‘method’, ‘default’)())



上面这段代码输出如下,请问要怎么修改才能使得 print 语句可以显示 method 函数的执行结果呢?谢谢

Traceback (most recent call last):
File “d:\Python3\t1.py”, line 9, in

print(getattr(A, ‘method’, ‘default’)())
TypeError: method() missing 1 required positional argument: 'self’
Python中请教一个关于getattr函数使用的问题,感谢!


2 回复

帖子内容呢?没看到具体问题啊。

getattr 是 Python 的内置函数,用来获取对象的属性值,语法是:

getattr(object, name[, default])
  • object:要获取属性的对象
  • name:属性名的字符串
  • default:可选,属性不存在时返回的默认值,不提供且属性不存在时会抛 AttributeError

举个例子:

class MyClass:
    value = 42

obj = MyClass()
print(getattr(obj, 'value'))          # 输出 42
print(getattr(obj, 'value', 100))     # 输出 42(属性存在,忽略默认值)
print(getattr(obj, 'unknown', 100))   # 输出 100(属性不存在,返回默认值)
print(getattr(obj, 'unknown'))        # 抛出 AttributeError

常见用途是动态调用方法或属性,比如根据字符串名称执行不同方法:

class Processor:
    def process_a(self):
        return 'A'
    def process_b(self):
        return 'B'

p = Processor()
method_name = 'process_a'
func = getattr(p, method_name)
print(func())  # 输出 'A'

如果你有具体的代码场景或报错,贴出来我帮你看看。


给楼主贴一段代码吧

#!/usr/bin/python

class test:
def method(self):
print(‘hello world’)
a=test()
print(getattr(a,‘method’,‘default’)())
print(getattr(test,‘method’,‘default’)())


输出结果

hello world
None
Traceback (most recent call last):
File “/usercode/file3.py”, line 8, in <module>
print(getattr(test,‘method’,‘default’)())
TypeError: method() missing 1 required positional argument: 'self’


楼主你自己的代码需要传递实例

回到顶部