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方法,求解答
cs继承一下ct的属性就行了。
class Cs:
改成这样
class Cs(Ct):
test3是定义在Ct类里的,你去Cs类里找能找到才怪
既然Cs类里有属性self.ct是Ct类的实例,那你拿到这个实例之后再执行它里面的test3方法,层级关系不要搞错了
这就好比你儿子的儿子不是你儿子