python - 在调用不带括号的类实例时返回一个对象
问题描述
我有多个要连接的数据库如下:
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.engine
ordb1()
将返回Engine(mssql+pymssql://...)
What I would like is for db1
(无括号)给我相同的结果:类型为 的对象sqlalchemy.engine.base.Engine
。
这应该是可能的!考虑一下 Pandaspd.DataFrame()
是一个类。您可以调用一个类实例并让它返回一个不带括号的 DataFrame,如下所示:
import pandas as pd
x = pd.DataFrame()
type(x)
pandas.core.frame.DataFrame
我尝试浏览熊猫源代码,但无法弄清楚他们是如何做到的。
解决方案
推荐阅读
- android - 如何通过 REST API 将 APK/Bundle 上传到 Firebase 测试实验室?
- terraform - 如何为不是为 terraform 中的每个模块创建资源?
- c# - 如何使控件失去焦点单击它之外的任何位置?
- sql - SQLite 在递归 CTE 上是否存在性能不足或者我写错了 sql?
- swift - 使用 ToolbarItem(placement: .principal) re: largeTitle 的正确方法是什么?
- java - 传递给 @OneToMany 和 @OneToOne 的 Spring Boot Data JPA 分离实体
- sql-server - 如何在将源的最大日期添加到其他源的同时对不同的源求和
- typescript - const 变量作为类型 - 打字稿
- prometheus - 获取每个时间序列的最新值
- reactjs - 是否可以使用对象类型定义来构造新的数组/元组类型?