反射機制: 讓物件告訴我們它的相關資訊(物件擁有的屬性和方法, 物件所屬的類, 這個類是否有某個屬性或者方法等等)
li = [1,2,3,4]
print(dir(li))
print(help(li.index))
import random
class turtle(object):
"""烏龜類
"""# 建構函式什麼時候執行? =---*****建立物件時執行
def __init__(self): # self指的是例項化的物件;
# 烏龜的屬性: x,y軸座標和體力值
# 烏龜的x軸, 範圍1,10
self.x = random.randint(1, 10)
self.y = random.randint(1, 10)
# 烏龜初始化體力為100
self.power = 100
# 類的方法:
def move(self):
# 烏龜的最大移動能力為2,[-2, -1, 0, 1, 2]
move_skill = [-2, -1, 0, 1, 2]
# 計算出烏龜的新座標(10, 12)
new_x = self.x + random.choice(move_skill)
new_y = self.y + random.choice(move_skill)
# 對於新座標進行檢驗, 是哦否合法, 如果不合法, 進行處理
self.x = self.is_vaild(new_x)
self.y = self.is_vaild(new_y)
# 烏龜每移動一次,體力消耗1
self.power -= 1
def is_vaild(self, value):
"""判斷傳進來的x軸座標或者y軸座標是否合法?
1). 如果合法, 直接返回傳進來的值;
2). value<=0; *****> abs(value);
3). value > 10 *****=> 10-(value-10);
:param value:
:return:
"""if 1 <= value <= 10:
return value
elif value < 1:
return abs(value)
else:
return 10 - (value - 10)
def eat(self):
"""當烏龜和魚座標重疊,烏龜吃掉魚,烏龜體力增加20
:return:
"""self.power += 20
turtle = turtle()
print(dir(turtle))
# 2. 判斷物件所屬的類?
a = [1,2,3,4]
print(type(a))
print(type(turtle))
from datetime import date
d = date(2018, 1,1)
print(type(d))
print(isinstance(1, str))
print(isinstance(turtle, turtle))
# 3. 根據魔術方法來獲取
案例:
from lib import bbs
def run():
modules, func = input('url:').split('/')[-2:] # 獲取目錄的倒數兩個, 即 bbs login
# print(modules, func)
# 倒入乙個包含變數的模組名, 其中obj就是匯入模組的別名
obj = __import__('lib.'+ modules)
# print(obj)
if hasattr(obj, func):
return getattr(obj, func)()
else:
return '404:頁面找不到'
python反射機制
本文總結python的反射機制,以及其簡單應用 首先要說的是globals 函式 在沒有任何模組匯入的情況下,執行globals函式,函式返回的是乙個包含當前作用域的全域性變數的字典,key是全域性範圍內物件的名字。globals 然後先導入乙個模組 os 在執行globals函式 import o...
python反射機制
反射的本質 反射就是通過字串的形式,匯入模組 通過字串的形式,去模組尋找指定函式,並執行。利用字串的形式去物件 模組 中操作 查詢 獲取 刪除 新增 成員,一種基於字串的事件驅動!下面我們通過反射機制在web路由上的應用來介紹反射 首先我們來看如下 的設計 users.py 模組中 visit模組中...
python反射機制
根據不同的場景執行不同的函式,可以將這種寫入配置中,讀取配置,執行對應的函式,這個時候獲取的函式為字串,如何執行該字串呢?反射就是通過字串的形式,匯入模組 反射就是通過字串的形式,匯入模組 通過字串的形式,去模組尋找指定函式,並執行。利用字串的形式去物件中操作屬性或者函式利用字串的形式去物件中操作屬...