PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
Python
[問題] class method alias
作者:
amigcamel
(阿吉amig)
2015-11-18 17:20:18
說實在我也不知道怎麼樣定這個標題
直接上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短一點
不知道這種技巧叫什麼
作者:
uranusjr
(â†é€™äººæ˜¯è¶…級笨蛋)
2015-11-18 17:46:00
實作 __getattr__ 然後用 getattr(self.conn, name)參考
http://d.pr/19YDh
和
http://d.pr/11fNI
作者:
bibo9901
(function(){})()
2015-11-18 18:07:00
這樣不算違反DRY啊? 只是code長一點而已不然也可以這樣
http://tinyurl.com/o5cyvsk
用__getattr__等於你所有attr都去self.conn找了, 那又何必新弄一個class
繼續閱讀
[問題] python的套件有跨平台嗎?
tas72732002
[問題] 關於時區設定的問題
herbacin
[問題] 關於 Flask 奇怪問題
herbacin
[問題] pandas 轉 numpy.array
HANASE
Re: [問題] Python 大數據處理
MOONY135
[問題] Python 大數據處理
decken
[問題] Linux下透過anaconda安裝igraph
vincentflame
Re: [問題]關於igraph安裝問題
vincentflame
[問題] 安裝完scapy後執行scapy出現這個error
Dong0129
[問題] 關於GUI的開發
std610706
Links
booklink
Contact Us: admin [ a t ] ucptt.com