在下面的代碼,圖()充當代理點和邊 - 客戶只能通過圖表()訪問頂點和邊:在Python中使用代理模式時,代理類如何在調用對象中訪問狀態?
from rest import Resource
from elements import Vertex, Edge
class Graph(object):
def __init__(self,db_url):
self.resource = Resource(db_url)
self.vertices = Vertex
self.edges = Edge
g1 = Graph('http://localhost/one')
g2 = Graph('http://localhost/two')
什麼是頂點的最佳途徑和邊緣接入資源對象,而不必將它作爲參數傳遞給Vertex和Edge?
我不希望將它作爲參數傳遞的原因之一是因爲Vertex和Edge有classmethods,如create(),也需要訪問資源對象。
燒瓶/ Werkzeug使用「上下文當地人」(http://werkzeug.pocoo.org/docs/local/) - 這是正確的方法,還是有更好的方法?
通過代理你的意思只是另一個參考? – 2011-06-28 03:25:20
在這種情況下,Graph()充當Vertex和Edge的代理,因爲客戶端只通過Graph()訪問Vertex和Edge。 – espeed
您可能想要停止使用「代理對象」,並且改爲了解「依賴注入」,儘管python粉絲傾向於忽略那些說解釋器本身是依賴注入框架(因爲您可以動態更改類的名稱以適應您的情況) – Arafangion