python中针对实例对象的方法

以下是包含 hasattr 的 Python 内置函数列表,类似于之前提到的各种方法:

1. getattr()

  • 功能:获取对象的属性值。如果属性不存在,可以返回默认值。
  • 语法
    getattr(object, name, default)
    
    • object: 对象
    • name: 属性名称(字符串)
    • default: 如果属性不存在,则返回的默认值(可选)
  • 示例
    class MyClass:
        def __init__(self):
            self.name = "Python"
    
    obj = MyClass()
    print(getattr(obj, 'name'))       # 输出: Python
    print(getattr(obj, 'age', 25))    # 输出: 25 (因为 'age' 属性不存在)
    

2. setattr()

  • 功能:为对象设置属性值。如果属性不存在,会创建新的属性。
  • 语法
    setattr(object, name, value)
    
    • object: 对象
    • name: 属性名称(字符串)
    • value: 要设置的属性值
  • 示例
    class MyClass:
        def __init__(self):
            self.name = "Python"
    
    obj = MyClass()
    setattr(obj, 'age', 25)  # 设置新属性 'age'
    print(obj.age)           # 输出: 25
    

3. delattr()

  • 功能:删除对象的属性。如果属性不存在,则抛出 AttributeError
  • 语法
    delattr(object, name)
    
    • object: 对象
    • name: 属性名称(字符串)
  • 示例
    class MyClass:
        def __init__(self):
            self.name = "Python"
    
    obj = MyClass()
    delattr(obj, 'name')  # 删除 'name' 属性
    print(hasattr(obj, 'name'))  # 输出: False (属性已删除)
    

4. hasattr()

  • 功能:检查对象是否有指定的属性。
  • 语法
    hasattr(object, name)
    
    • object: 对象
    • name: 属性名称(字符串)
  • 示例
    class MyClass:
        def __init__(self):
            self.name = "Python"
    
    obj = MyClass()
    print(hasattr(obj, 'name'))  # 输出: True (属性存在)
    print(hasattr(obj, 'age'))   # 输出: False (属性不存在)
    

5. type()

  • 功能:返回对象的类型。
  • 语法
    type(object)
    
    • object: 任意对象
  • 示例
    print(type(42))            # 输出: <class 'int'>
    print(type("Hello"))       # 输出: <class 'str'>
    

6. isinstance()

  • 功能:检查对象是否是指定类或其子类的实例。
  • 语法
    isinstance(object, classinfo)
    
    • object: 任意对象
    • classinfo: 类或类元组
  • 示例
    print(isinstance(42, int))           # 输出: True
    print(isinstance("Hello", str))      # 输出: True
    print(isinstance(42, (str, float)))  # 输出: False
    

7. issubclass()

  • 功能:检查一个类是否是另一个类的子类。
  • 语法
    issubclass(class, classinfo)
    
    • class: 类对象
    • classinfo: 类或类元组
  • 示例
    class A:
        pass
    
    class B(A):
        pass
    
    print(issubclass(B, A))  # 输出: True
    print(issubclass(A, B))  # 输出: False
    

8. callable()

  • 功能:检查对象是否可调用(例如,函数、方法或具有 __call__ 方法的对象)。
  • 语法
    callable(object)
    
    • object: 任意对象
  • 示例
    def my_function():
        pass
    
    class MyClass:
        def __call__(self):
            print("Called!")
    
    obj = MyClass()
    
    print(callable(my_function))  # 输出: True
    print(callable(obj))          # 输出: True
    print(callable(42))           # 输出: False
    

9. dir()

  • 功能:返回对象的属性和方法列表。通常用于探索对象。
  • 语法
    dir(object)
    
    • object: 任意对象
  • 示例
    class MyClass:
        def __init__(self):
            self.name = "Python"
        def say_hello(self):
            print("Hello!")
    
    obj = MyClass()
    print(dir(obj))  # 输出: ['__class__', '__delattr__', '__dict__', '__doc__', '__eq__', '__format__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', 'name', 'say_hello']
    

10. id()

  • 功能:返回对象的唯一标识符(内存地址)。
  • 语法
    id(object)
    
    • object: 任意对象
  • 示例
    a = 42
    b = 42
    print(id(a))  # 输出对象 'a' 的唯一标识符
    print(id(b))  # 输出对象 'b' 的唯一标识符,可能与 'a' 相同
    

11. vars()

  • 功能:返回对象的 __dict__ 属性,即对象的属性字典。
  • 语法
    vars(object)
    
    • object: 任意对象
  • 示例
    class MyClass:
        def __init__(self):
            self.name = "Python"
            self.age = 30
    
    obj = MyClass()
    print(vars(obj))  # 输出: {'name': 'Python', 'age': 30}
    

12. del()

  • 功能:删除对象或对象的属性。
  • 语法
    del object
    del object.attribute
    
  • 示例
    a = 42
    del a  # 删除对象 'a'
    
    class MyClass:
        def __init__(self):
            self.name = "Python"
    
    obj = MyClass()
    del obj.name  # 删除 'name' 属性
    

总结

这些内置函数提供了对对象、类、属性等的基本操作方法。通过 hasattr(),你可以检查对象是否具有特定的属性,而通过其他函数(如 getattr()setattr()delattr())则能帮助你进一步管理对象的属性。

posted @ 2025-01-21 12:11  清澈的澈  阅读(23)  评论(0)    收藏  举报