调用没有括号的类实例时返回一个对象

时间:2019-04-09 02:21:03

标签: python pandas class

我要连接到以下多个数据库:

class DB:
    def __init__(self, database):
        conn_str = ...
        try:
            self.engine = sqlalchemy.create_engine(conn_str)
            self.conn = self.engine.connect()
            print('yay')
        except Exception as e:
            print('\n Something is wrong: \n', e)

    def __call__(self):
        return self.engine

db1 = DB(some_url)

从此处,呼叫db1.enginedb1()将返回Engine(mssql+pymssql://...) 我想要的是db1(不带括号)给我相同的结果:sqlalchemy.engine.base.Engine类型的对象。

这应该可行!考虑熊猫pd.DataFrame()是一类。您可以调用一个类实例,并使其返回不带括号的DataFrame,如下所示:

import pandas as pd
x = pd.DataFrame()
type(x)

pandas.core.frame.DataFrame

我尝试浏览熊猫的源代码,但无法弄清楚它们是如何做到的。

0 个答案:

没有答案