我有一个简短的问题。我有一个存储类的实例的二维数组。数组的元素根据程序中前面读取的文本文件分配一个特定的类。由于我不知道没有在文件中查找哪些类存储在特定的元素,我可以引用该索引中不存在的字段(指当temp的实例存储在该索引中时的外观)。我想出了一个测试方法,但它很长,需要第二个矩阵。是否有函数来测试一个类中字段的存在?测试类中是否存在字段
class temp():
name = "default"
class temp1():
appearance = "@"
我有一个简短的问题。我有一个存储类的实例的二维数组。数组的元素根据程序中前面读取的文本文件分配一个特定的类。由于我不知道没有在文件中查找哪些类存储在特定的元素,我可以引用该索引中不存在的字段(指当temp的实例存储在该索引中时的外观)。我想出了一个测试方法,但它很长,需要第二个矩阵。是否有函数来测试一个类中字段的存在?测试类中是否存在字段
class temp():
name = "default"
class temp1():
appearance = "@"
你是否在寻找:
isinstance(对象,CLASSINFO)
返回 真如果对象参数是CLASSINFO参数的 实例,或者一个 (直接或间接)子类 。如果classinfo 是一个类型对象(新样式类)并且 对象是该类型的对象或 a(直接或间接)子类 也返回true。如果对象不是类 实例或给定的 类型的对象,则函数始终返回 false。如果classinfo既不是类 对象也不是类型对象,它可能是 类或对象类型的元组,或可能 递归地包含其他这样的元组 (其他序列类型不接受 )。如果classinfo不是 的类,类型或元组的类型, 类型和这些元组,则会引发TypeError 异常。
无论你想要做什么似乎都不是一个好主意。请更详细地描述您的原始需求,我们将帮助您提出更好的设计。
hasattr(x, 'foo')
是一个内置的二进制函数,用于检查对象x
是否具有属性x.foo
(它是否从它的类中获取),这看起来接近你所要求的。不管你问的是应该是所要求的是一个不同的问题 - 正如@Eli的回答所暗示的,你的设计看起来很奇怪。但是,这可以解答你的问题;-)。
您也可以使用异常处理来执行此操作。
try:
val = x.name
except AttributeError:
val = x.appearance