1. 程式人生 > >pyton3 反射相關的一些操作

pyton3 反射相關的一些操作

# -*- coding:utf-8 -*-
# Author: Evan Mi


class Dog(object):

    def __init__(self, name):
        self.name = name

    def eat(self, food):
        print('%s is eating ... %s' % (self.name, food))


def buck(self):
    print('%s is bucking' % self.name)


d = Dog('jack')
choice = input('>>: ').strip()
# 判斷是否有屬性或方法
print(hasattr(d, choice))
# 獲得物件的屬性或方法(如果是方法,後面加括號後呼叫)
func = getattr(d, choice)
func('some')
print(getattr(d, 'name'))
# 給物件新增一個方法或屬性,方法或屬性的名字自己起
setattr(d, 'bb', buck)
setattr(d, 'age', 22)
print(d.age)
d.bb(d)  # 動態增加的方法不會自動穿self,需要自己手動去傳
# 刪除物件的屬性
delattr(d, 'name')
print(hasattr(d, 'name'))