本知识点参考廖雪峰的Python课程 [https://www.liaoxuefeng.com]
感谢北京图灵知非的免费课程 [http://www.tulingxueyuan.com/]
参考菜鸟教程[http://www.runoob.com/]
类的相关函数
获取对象的信息
- issubclass:检测一个类是否是另一个类的子类
- 语法:issubclass(class, classinfo)
- class:类
- classinfo:类
返回值为布尔类型:True,False
class A(): pass class B(A): pass print(issubclass(B,A)) print(issubclass(B,A)) # 返回值为True >>> True
- 语法:issubclass(class, classinfo)
- isinstance:检测一个对象是否是一个类的实例
- 语法:isinstance(object, classinfo)
- object -- 实例对象
- classinfo --一个类
返回值为布尔类型:True,False
a = A() isinstance(a,A) >>> True >
- hasattr:检测一个对象是否由成员xxx
- 语法:hasattr(object)
- object -- 对象
- name -- 字符串,属性名
返回值为布尔类型:True,False
class Yang(Student): def __init__(self,name,score): self.name=name self.score=score yang = Yang('yangaoteng',100) hasattr(yang,'name') >>>True
- getattr:函数用于返回一个对象属性值
- getattr语法:getattr(object,name[,default])
- object -- 对象
- name -- 字符串,对象属性
- default -- 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError
返回对象的属性值
getattr(yang,'name') # 获取属性 name值 >>> 'yangaoteng' getattr(yang,'age') #属性‘age’不存在,报错 AttributeError: 'Yang' object has no attribute 'age' getattr(yang,'age',18) # 属性'age' 不存在,返回来默认值 >>> 18
- setattr: 函数对应 函数
getattr()
,用于设定属性值- setattr(object,name,value)
- object -- 对象
- name -- 字符串,对象属性
- value -- 属性值
返回值:None
setattr(yang,'score',101) getattr(yang,'score') >>> 101
- delattr: 函数用于删除属性(delattr(x,'foobar') 相等于 del x.foobar)
- 语法 delattr(object,name)
- object:对象
- name:属性值
返回值:None
delattr(yang,'score') getattr(yang,'score',66) >>> 66
- dir: 获取对象的成员列表
- dir(object)
- object -- 实例对象
返回值:dir的值
dir(a) '__class__', '__delattr__', '__dict__', '__dir__', .........
属性、特征和修饰符 ---(本文参考:https://www.cnblogs.com/xiaobingqianrui/p/8556001.html)
property和@property
- property()用法
- 语法:class property([fget[, fset[, fdel[, doc]]]])
- fget -- 获取属性值的函数
- fset -- 设置属性值的函数
- fdel -- 删除属性值函数
doc -- 属性描述信息
class property_test(): def __init__(self,size=10): self.size = size def __getsize__(self): return self.size def __setsize__(self,value): self.size = value def __deletesize__(self): del self.size x = propert(__getsize__,__setsize__,__deletesize__,'我是说明文档')
- 如果p是 property_test的实例化,p.x将触发
__getsize__
,p.x =value 会触发__setter__
,del p.x 触发__deletesize__
. @property用法
class property_test(): def __init__(self,size=10): self.sizevalue = size @property def size (self): return self.sizevalue @size.setter def size (self,value): self.sizevlaue = value @size.deleter def size (self): del self.sizevalue
类的内置属性
- __ dict __:以字典的方式显示类的成员组成
- __ doc __: 获取类的文档信息
- __ name __:获取类的名称,如果在模块中使用,获取模块的名称
__ bases __: 获取某个类的所有父类,以元组的方式显示
类的常用魔术方法
- 魔术方法就是不需要人为调用的方法,基本是在特定的时刻自动触发
- 魔术方法的统一的特征,方法名被前后各两个下滑线包裹
__init
:构造函数__slots
:限制实例的属性__new__
: 对象实例化方法,此函数较特殊,一般不需要使用__call__
: 对象当函数使用的时候触发__str__
: 当对象被当做字符串使用的时候调用
.....- 详细参考:
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014319098638265527beb24f7840aa97de564ccc7f20f6000