isinstance
函数
详细介绍
isinstance
是 Python 中的一个内置函数,用于判断一个对象是否是一个已知的类型,或者是该类型的子类(对于类类型)。这个函数接受两个参数:第一个参数是你要检查的对象,第二个参数是一个类型或者类型的元组。如果第一个参数是第二个参数指定的类型或其子类的一个实例,isinstance
将返回 True
,否则返回 False
。
这个函数非常有用,因为它允许你在运行时检查对象的类型,从而可以编写更加通用和健壮的代码。
应用实例及代码示例
假设你有一个函数,它接受一个参数并打印出该参数的类型。但是,你只想处理整数和字符串类型的参数。你可以使用 isinstance
来检查参数的类型,并相应地处理它们。
python
def print_type(obj):
if isinstance(obj, int):
print(f"{obj} is an integer.")
elif isinstance(obj, str):
print(f"{obj} is a string.")
else:
print(f"Unsupported type: {type(obj)}")
# 测试
print_type(42) # 输出: 42 is an integer.
print_type("hello") # 输出: hello is a string.
print_type([1, 2, 3]) # 输出: Unsupported type: <class 'list'>
在这个例子中,isinstance
用于检查 obj
是否是 int
或 str
类型。
hasattr
函数
详细介绍
hasattr
是 Python 中的另一个内置函数,用于检查一个对象是否具有指定的属性。这个函数接受两个参数:第一个参数是你要检查的对象,第二个参数是一个字符串,表示你要检查的属性的名称。如果对象具有该属性,hasattr
将返回 True
,否则返回 False
。
这个函数在处理动态属性或者不确定对象是否具有某个属性的情况下非常有用。
应用实例及代码示例
假设你有一个类,它有一些属性,并且你想在运行时检查一个实例是否具有某个特定的属性。
python
class Person:
def __init__(self, name, age=None):
self.name = name
self.age = age
# 创建一个 Person 实例
person = Person("Alice")
# 检查属性
print(hasattr(person, "name")) # 输出: True
print(hasattr(person, "age")) # 输出: True
print(hasattr(person, "address"))# 输出: False
# 尝试访问不存在的属性(不推荐,会引发 AttributeError)
# print(person.address)
# 更安全的访问方式
if hasattr(person, "address"):
print(person.address)
else:
print("Address is not available.")
在这个例子中,hasattr
用于检查 person
实例是否具有 name
、age
和 address
属性。由于 address
属性不存在,所以对应的 hasattr
调用返回 False
。
使用 hasattr
可以避免在尝试访问不存在的属性时引发 AttributeError
异常,从而使代码更加健壮。