Python 类与对象 BIF
发布日期:2021-05-07 23:05:30 浏览次数:22 分类:精选文章

本文共 1953 字,大约阅读时间需要 6 分钟。

Python 类与对象模块的基本内置功能

在 Python 的类与对象模块中,object 是所有类的基类,所有类默认继承自 object。为了更好地操作类和对象,Python 提供了一系列内置函数(BIF),这些函数能够帮助开发者更高效地管理类和对象属性。

一、内置函数(BIF)概述

以下是几个常用的内置函数及其功能说明:

  • issubclass(class, classinfo)

    • 用于检查某个类是否是另一个类(或类组合)的子类。如果 classclassinfo 的子类,则返回 True;否则返回 False
    • classinfo 可以是一个单一的类,或者是多个类组成的元组。只要 class 的父类在 classinfo 中,返回 True
  • isinstance(object, classinfo)

    • 用于检查一个对象是否属于某个类。如果第一个参数不是对象(即不是实例),则永远返回 False
    • 例如,isinstance(1, int) 返回 True,因为 1 是整数对象。
  • hasattr(object, name)

    • 检查对象是否具有指定的属性。如果对象中存在该属性,则返回 True,否则返回 False
    • 例如,hasattr(c, "x") 返回 True,如果对象 c 有属性 x
  • getattr(object, name, default)

    • 返回对象中指定属性的值。如果属性不存在,则返回 default(若 default 未提供,则抛出 AttributeError 异常)。
    • 例如,getattr(c, "y", 0) 返回 0,因为对象 c 没有属性 y
  • setattr(object, name, value)

    • 用于设置对象的属性值。如果属性不存在,则会创建新的属性并赋值。
    • 例如,setattr(c, "x", 10) 会将 c.x 设为 10。
  • delattr(object, name)

    • 用于删除对象的属性。如果属性不存在,则抛出 AttributeError 异常。
    • 例如,delattr(c, "x") 会删除对象 c 的属性 x
  • property(fget=None, fset=None, fdel=None, doc=None)

    • 通过这个函数可以定义属性。fgetfsetfred 分别指定获取、设置和删除属性的函数。
    • 例如,定义一个属性 p,可以使用 p = property(getsize, setsize, delsize)

  • 示例代码说明

    以下是通过上述函数实现的示例代码:

    class A():    def printA(self):        print("A")class Aa(A):    pass# 检查类继承关系print(issubclass(A, Aa))   # Falseprint(issubclass(Aa, A))   # Truea = A()print(isinstance(a, A))    # Trueprint(isinstance(a, Aa))    # Falsea = Aa()print(isinstance(a, Aa))   # Trueprint(isinstance(a, A))    # Trueprint(isinstance(1, int))   # True

    属性(Property)的应用

    属性是通过 property 函数定义的属性值,可以自定义获取、设置和删除属性的行为。以下是一个使用 property 的示例:

    class Proper():    def __init__(self, size=100):        self.size = size    def getsize(self):        return self.size    def setsize(self, value):        self.size = value    def delsize(self):        del self.size    p = property(getsize, setsize, delsize)

    创建一个 Proper 实例并使用属性:

    q = Proper()print(q.p)   # 100q.p = 10print(q.p)   # 10try:    del q.pexcept:    print("删除属性失败")print(q.p)   # Traceback: 无法访问 'Proper' 对象的属性 'p'

    通过以上方法,可以更灵活地管理类和对象的属性,提高代码的可读性和维护性。

    上一篇:python 魔法方法
    下一篇:Python 面向对象 继承 多重继承 类 类对象 实例对象 绑定

    发表评论

    最新留言

    留言是一种美德,欢迎回访!
    [***.207.175.100]2025年04月20日 04时58分51秒