簡體   English   中英

python _init_函數中令人困惑的屬性分配

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM