首页 新闻 会员 周边 捐助

python 使用getattr调用其他类方法报错

0
悬赏园豆:30 [已关闭问题] 关闭于 2022-10-25 13:07

问题遇到的现象和发生背景

getattr只能调用自己类里的方法和属性,无法调用导入的其他类的属性和方法,但是导入其他类的实例化对象使用hasattr方法返回的是True,但是实例化对象里无法直接调用其他类的方法只能调用其他类对象,这个该怎样用getattr实现调用其他类的方法呢

代码

from common.read_file import Read
class Ct:
    
	def test3(self):
		print('test4函数')

class Cs:
	name='张三'
    
	def __init__(self):
		self.read=Read(r'../data/test.xlsx',0)
		self.ct=Ct()
		
	def test1(self):
		print('test1函数')
		
	def test2(self):
		print('test2函数')
		
if __name__ == '__main__':
	c=Cs()
	print(hasattr(c, 'ct'))#True
	print(hasattr(c,'test2'))#True
	print(hasattr(c,'name'))#True
	print(hasattr(c,'test3'))#False
   	getattr(c, 'test2')()
	getattr(c,'test3')()

运行结果及报错内容

getattr(c,'test3')()
AttributeError: 'Cs' object has no attribute 'test3'

我的解答思路和尝试过的方法

geattr(c,'ct.test3')()
getattr(c,'ct').test3()

我想要达到的结果

使用getattr方法可以让实例化对象c调用其他类里的test3方法,求大佬解答

Ttonet的主页 Ttonet | 初学一级 | 园豆:5
提问于:2022-10-25 09:41
< >
分享
所有回答(1)
0

csdn里的一位大佬已经给出方法解决,通过实例化对象c确实不能直接调用Ct里的方法,但是Cs可以继承Ct之后,Cs的实例化对象就可以直接调用Ct里的test3方法

Ttonet | 园豆:5 (初学一级) | 2022-10-25 13:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册