乐学python_【IT专家】铁乐学python
鐵樂學(xué)
python
2018/04/18 13
鐵樂學(xué)
python_day23_
面向?qū)ο筮M階
1_
反射
以下內(nèi)容大部分摘自博客
cnblogs/Eva-J/
isinstance()
和
issubclass()
兩者的返回值都是布爾值
isinstance()
能夠檢測到繼承關(guān)系
type()
只能單純的判
斷類
isinstance()
判斷一個對象和一個類有沒有血緣關(guān)系
issubclass()
接收兩個參數(shù),前一個是子類名,后一個是父類名
如果返回
True,
說
明有父子
(
繼承
)
關(guān)系。
isinstance(obj,cls)
檢查
obj
是否是類
cls
的對象
class Foo(object): passobj = Foo()
#
實例化
isinstance(obj, Foo)issubclass(sub, super)
檢查
sub
類是否是
super
類的派生
類
class Foo(object): passclass Bar(Foo): passissubclass(Bar, Foo)issubclass
可以追溯
到
更遠的源頭,例如:
class
tuple_A():
passclass
grandfather_B(tuple_A):
passclass
father_C(grandfather_B):
passclass
son_D(father_C):
passprint(issubclass(son_D,
tuple_A))
#
返回
True
,是不是很像吸血鬼家族呢?
1
什么是反射
反射的概念是由
Smith
在
1982
年首次提出的,主要是指程序可以訪問、檢測和修改它本身狀態(tài)或行
為的一種能力(自省)。這一概念的提出很快引發(fā)了計算機科學(xué)領(lǐng)域關(guān)于應(yīng)用反射性
的研究。它首先被程序語言的設(shè)計領(lǐng)域所采用
,
并在
Lisp
和面向?qū)ο蠓矫嫒〉昧顺?/p>
績。
2
python
面向?qū)ο笾械姆瓷?#xff1a;
通過字符串的形式操作對象相關(guān)的屬性。
python
中的一切事物都是對象(都可以使用反射)
四個可以實現(xiàn)自省的函數(shù):
下列方法
適用于類和對象(一切皆對象,類本身也是一個對象)
1
)
hasattr(*args, **kwargs)def hasattr(*args, **kwargs): # real signature unknown
Return whether
the
object
has an attribute with
the
given
name.
This
is done
by
calling
getattr(obj,
name)
and
catching
AttributeError.
pass2
)
getattr(object,
name,
default=None)def
getattr(object,
name,
default=None):
#
known
special
case
of
getattr
getattr(object, name[, default]) - value Get a named attribute from an object; getattr(x,
‘y’)
總結(jié)
以上是生活随笔為你收集整理的乐学python_【IT专家】铁乐学python的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: potainer 日志_日志系统落地:制
- 下一篇: 决策树模型 - (ID3算法、C4.5算