[問題] class method alias
說實在我也不知道怎麼樣定這個標題
直接上code
應該會比較清楚
#這邊我以redis-py作為範例,問題本身與redis毫無關係
import redis
class Redis:
def __init__(self):
self.conn = redis.StrictRedis()
# 這邊我想要讓self的method直接繼承self.conn下面的所有methods
# (不知道用「繼承」這個詞對不對)
self.keys = self.conn.keys
self.hget = self.conn.hget
self.hgetall = self.conn.hgetall
self.delete = self.conn.delete
client = Redis()
於是乎
我今天如果要得到所以keys
我可以用
client.keys('*')
也就完全等於
client.conn.keys('*')
我可以手動在__init__裡面
一個一個慢慢對應
但是這樣就違反DRY的原則了
而且也很不聰明
這樣作的目的只是想讓code短一點
不知道這種技巧叫什麼
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.220.233.165
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1447838420.A.213.html
→
11/18 17:46, , 1F
11/18 17:46, 1F
→
11/18 17:47, , 2F
11/18 17:47, 2F
感謝,我希望我沒有會錯意
以下是我改正的版本
如果有誤煩請指正
謝謝!
class Redis:
def __init__(self):
self.conn = redis.StrictRedis()
def __getattr__(self, attr):
return getattr(self.conn, attr)
※ 編輯: amigcamel (61.220.233.165), 11/18/2015 18:08:52
→
11/18 18:07, , 3F
11/18 18:07, 3F
→
11/18 18:10, , 4F
11/18 18:10, 4F
→
11/18 18:11, , 5F
11/18 18:11, 5F
→
11/18 18:11, , 6F
11/18 18:11, 6F
這只是demo code
建這個class
是因為我可以在這個class增加其他額外method
※ 編輯: amigcamel (61.220.233.165), 11/18/2015 18:14:58
Python 近期熱門文章
PTT數位生活區 即時熱門文章