国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

Python類的反射實(shí)例

打開(kāi)python開(kāi)發(fā)工具IDLE在編寫(xiě)Python代碼之前,我們首先需要打開(kāi)一個(gè)Python開(kāi)發(fā)工具。IDLE是Python自帶的一個(gè)簡(jiǎn)單的集成開(kāi)發(fā)環(huán)境(IDE),可以方便地編寫(xiě)和運(yùn)行Python代碼

打開(kāi)python開(kāi)發(fā)工具IDLE

在編寫(xiě)Python代碼之前,我們首先需要打開(kāi)一個(gè)Python開(kāi)發(fā)工具。IDLE是Python自帶的一個(gè)簡(jiǎn)單的集成開(kāi)發(fā)環(huán)境(IDE),可以方便地編寫(xiě)和運(yùn)行Python代碼。在IDLE中新建一個(gè)名為""的文件,并將以下代碼復(fù)制到文件中:

```python

class Test():

def __init__(self, name):

self._name name

def test1(self):

print('test1')

t1 Test('hello')

print(globals())

```

利用globals()函數(shù)實(shí)現(xiàn)反射

在上述代碼中,我們定義了一個(gè)Test類,并創(chuàng)建了一個(gè)t1對(duì)象。接下來(lái),我們可以使用`globals()`函數(shù)來(lái)實(shí)現(xiàn)反射。通過(guò)`globals()`函數(shù),我們可以獲取全局變量的字典,其中包含我們定義的Test類和t1對(duì)象。

```python

clz 'Test'

fn 'test1'

t2 globals()[clz]('world')

fun getattr(t2, fn)

fun()

```

通過(guò)類名的key,我們可以定位到類的地址,然后實(shí)例化一個(gè)t2對(duì)象。再利用`getattr()`函數(shù),我們可以獲取對(duì)象的方法并調(diào)用。

直接使用getattr方法

除了上述步驟,我們還可以直接在創(chuàng)建對(duì)象后使用`getattr()`方法來(lái)調(diào)用對(duì)象的方法。

```python

class Test():

def __init__(self, name):

self._name name

def test1(self):

print('test1')

t1 Test('hello')

f1 getattr(t1, 'test1')

f1()

clz 'Test'

fn 'test1'

t2 globals()[clz]('world')

fun getattr(t2, fn)

fun()

```

通過(guò)上述代碼,我們可以看到對(duì)象t1也可以調(diào)用test1()方法。

判斷函數(shù)是否存在

在使用反射時(shí),有時(shí)我們需要判斷一個(gè)類是否擁有某個(gè)方法??梢允褂胉hasattr()`方法來(lái)判斷函數(shù)是否存在。

```python

class Test():

def __init__(self, name):

self._name name

def test1(self):

print('test1')

t1 Test('hello')

print(hasattr(t1, 'test1'))

f1 getattr(t1, 'test1')

f1()

clz 'Test'

fn 'test1'

t2 globals()[clz]('world')

fun getattr(t2, fn)

fun()

```

通過(guò)以上代碼,我們可以看到輸出結(jié)果為T(mén)rue,表示類Test存在test1()方法。

標(biāo)簽: