
Python 类与对象 BIF
发布日期:2021-05-07 23:05:30
浏览次数:22
分类:精选文章
本文共 1953 字,大约阅读时间需要 6 分钟。
Python 类与对象模块的基本内置功能
在 Python 的类与对象模块中,object
是所有类的基类,所有类默认继承自 object
。为了更好地操作类和对象,Python 提供了一系列内置函数(BIF),这些函数能够帮助开发者更高效地管理类和对象属性。
一、内置函数(BIF)概述
以下是几个常用的内置函数及其功能说明:
issubclass(class, classinfo)
- 用于检查某个类是否是另一个类(或类组合)的子类。如果
class
是classinfo
的子类,则返回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)
- 通过这个函数可以定义属性。
fget
、fset
和fred
分别指定获取、设置和删除属性的函数。 - 例如,定义一个属性
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'
通过以上方法,可以更灵活地管理类和对象的属性,提高代码的可读性和维护性。