我想在类中找到实例变量,但出现错误 请谁能帮助我我要去哪里错了 预先感谢
class PythonSwitch:
def switch(self, typeOfInfo,nameofclass):
default = "invalid input"
return getattr(self, 'info_' + str(typeOfInfo), lambda: default)(nameofclass)
def info_1(self,nameofclass):
print("Class name : ",__class__.__name__)
print("---------- Method of class ----------")
print(dir(nameofclass))
print("---------- Instance variable in class ----------")
print(nameofclass.__dict__)
def info_2(self,nameofclass):
print("---------- Method of class ----------")
print(dir(nameofclass))
def info_3(self,nameofclass):
print("---------- Instance variable in class ----------")
print(nameofclass.__dict__)
s = PythonSwitch()
print(s.switch(1,"PythonSwitch"))
print(s.switch(0,"PythonSwitch"))
答案 0 :(得分:1)
类名不应该是您的代码使用真实类对象的字符串,因此请更改为:
s = PythonSwitch()
print(s.switch(1,PythonSwitch))
print(s.switch(0,PythonSwitch))
按照您的方式进行操作,只是传递一个字符串对象,该字符串对象如您的输出所述不会构成__dict__
属性。
编辑 另外,您的代码中还有一个错误:
return getattr(self, 'info_' + str(typeOfInfo), lambda: default)(nameofclass)
此行是错误的,因为您的lambda表达式不需要任何值,而应该是因为每个方法都至少获取一个self
参数。因此,您需要将其更改为:
return getattr(self, 'info_' + str(typeOfInfo), lambda self: default (nameofclass)