我在python中编写一个类,我有一个属性需要相对长的时间来计算,所以我只想做一次.此外,它会不会被类的每个实例需要的,所以我不想在默认情况下做到这一点在__init__.
我是Python新手,但不是编程.我可以很容易地找到一种方法来做到这一点,但我一次又一次地发现,使用我在其他语言中的经验,"Pythonic"做事的方式通常比我想象的要简单得多.
在Python中有没有"正确"的方法呢?
以下作品:
import pyodbc
pyodbc.connect('DRIVER={FreeTDS};Server=my.db.server;Database=mydb;UID=myuser;PWD=mypwd;TDS_Version=8.0;Port=1433;')
Run Code Online (Sandbox Code Playgroud)
以下失败:
import sqlalchemy
sqlalchemy.create_engine("mssql://myuser:mypwd@my.db.server:1433/mydb?driver=FreeTDS& odbc_options='TDS_Version=8.0'").connect()
Run Code Online (Sandbox Code Playgroud)
上面的错误消息是:
DBAPIError :(错误)('08001','[08001] [unixODBC] [FreeTDS] [SQL Server]无法连接到数据源(0)(SQLDriverConnectW)')无无
有人可以指点我正确的方向吗?有没有办法告诉sqlalchemy将特定的连接字符串传递给pyodbc?
请注意:我希望保持此DSN-less.
这按预期工作:
SELECT "Mike" AS FName
Run Code Online (Sandbox Code Playgroud)
这失败,错误"查询输入必须包含至少一个表或查询":
SELECT "Mike" AS FName
UNION ALL
SELECT "John" AS FName
Run Code Online (Sandbox Code Playgroud)
这只是Jet/ACE数据库引擎的怪癖/限制还是我遗漏了什么?
我基本上寻找与此VB/VBA字符串操作等效的Python:
FullName = LastName & ", " + FirstName
Run Code Online (Sandbox Code Playgroud)
在VB/VBA中+,&它们都是连接运算符,但它们处理Null值的方式不同:
"Some string" + Null ==> Null
"Some string" & Null ==> "Some string"
Run Code Online (Sandbox Code Playgroud)
这个隐藏的功能允许我编写的第一行代码包含所需LastName和可选FirstName值之间的逗号和空格.如果FirstName为Null(Null是Python的无效的VB/VBA),则FullName将设置为LastName,不带尾随逗号.
在Python中有没有一种惯用的方法呢?
技术说明:
gnibbler和eumiro的答案并不完全等同于VB/VBA +和&.使用他们的方法,如果FirstName是空字符串("")而不是None,则不会有尾随逗号.在几乎所有情况下,这都优于VB/VBA的结果,即使用空白的FirstName添加尾随逗号.
在TortoiseHg 1.7中,我可以将Hg Repository Explorer指向文件并查看版本列表.选择2个版本并右键单击允许我启动我最喜欢的Visual Diff工具来显示它们的差异.
我最近升级到TortoiseHg 2.0.3并且无法找到除了带有tip版本的工作文件之外的任何视觉差异的方法."修订历史记录"显示了一个类似于旧的Repo Explorer的列表,但似乎没有办法隐藏视觉差异.此功能是否被删除?
我正处于规划新网站的最初阶段.我想为两个不同的用例提供付款处理:
向付款用户付款的用户比例约为100:1.我提到这一点是因为我想确保用户很容易付款,但对于想要接收付款的用户可能会遇到一些额外的麻烦.
我还没有确定商业模式,但我正在考虑在上面的用例2中收取一小笔中间人费.我计划使用python框架来实现网站(倾向于django或web2py),所以现有的python模块支持将是一个加号.
我的问题是:我应该使用特定的支付网关(如果是,使用哪个)或者我应该为多个支付网关(以及哪些支持网关)提供支持?
编辑:滚动自己的支付网关有多少噩梦?换句话说,直接接受和处理Visa,MasterCard,Discover等会不会有麻烦?有人有这方面的经验吗?责任/安全问题比他们的价值更麻烦?
我已经找到了很多用几种语言来做这个的例子,但没有一个是VBA特有的.这个问题,如何使用进度条下载VB6中的多个文件?,解决了在VB6中执行此操作的三种不同方法.
这些方法都不适合我,因为:
上面的2号似乎是最有希望的.我想知道我是否可以在我的VBA项目中使用类模块创建IBindStatusCallback接口?
或者可能使用上面的数字3提供可用于提供当前进度的属性/方法.任何帮助深表感谢.
如何将自定义方法添加到内置python数据类型?例如,我想从这个问题实现一个解决方案,但能够按如下方式调用它:
>>> s = "A string with extra whitespace"
>>> print s.strip_inner()
>>> A string with extra whitespace
Run Code Online (Sandbox Code Playgroud)
那么我该如何定义自定义.strip_inner()字符串方法呢?
解释为什么Access.Application.Eval()(通常缩写为Eval())产生的结果不同于在这种情况下仅评估原始表达式:
Debug.Print Round(.575 * 100)
57
Debug.Print Eval("Round(.575 * 100)")
58
Run Code Online (Sandbox Code Playgroud)
编辑:为了解决GSerg的答案,以下仍然会返回不同的结果:
Debug.Print Eval("Round(CSng(.575) * 100)")
57
Debug.Print Round(CSng(.575) * 100)
58
Run Code Online (Sandbox Code Playgroud) python ×4
vba ×3
access-vba ×2
ms-access ×2
amazon ×1
diff ×1
django ×1
download ×1
freetds ×1
jet ×1
memoization ×1
paypal ×1
pyodbc ×1
sql ×1
sql-server ×1
sqlalchemy ×1
string ×1
tortoisehg ×1
vb6 ×1