[英]Confusing property assignment in python _init_ function
以下代碼段來自SQLAlchemy源代碼 :
class EngineStrategy(object):
"""An adaptor that processes input arguments and produces an Engine.
Provides a ``create`` method that receives input arguments and
produces an instance of base.Engine or a subclass.
"""
def __init__(self):
strategies[self.name] = self
最后的陳述如何運作?
EngineStrategy
是一種抽象類。 如果嘗試搜索此類的用法,則只能從該類中找到繼承。
所以self.name
實際上來自cls.name
(類變量),就像下面的PlainEngineStrategy
:
class PlainEngineStrategy(DefaultEngineStrategy): """Strategy for configuring a regular Engine.""" name = 'plain' engine_cls = base.Engine
這允許將所有策略存儲在結構如下的strategies
字典中: {'stategy_name': strategy_class}
與sqlalchemy
相關的注釋 :官方sqlalchemy
鏡像現在位於https://github.com/sqlalchemy/sqlalchemy
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.