我看到它不被认为是 pythonic 使用isinstance()
,人们建议例如使用hasattr()
.
我想知道最好的方法是记录正确使用使用hasattr()
.
示例:我从不同的网站(例如 Yahoo Finance、Google Finance)获取股票数据,并且有一些类GoogleFinanceData
,YahooFinanceData
它们都有一个方法get_stock(date)
。还有一个比较两只股票价值的功能:
def compare_stocks(stock1,stock2,date):
if hasattr(stock1,'get_stock') and hasattr(stock2,'get_stock'):
if stock1.get_stock(date) < stock2.get_stock(date):
print "stock1 < stock2"
else:
print "stock1 > stock2"
该函数的使用如下:
compare_stocks(GoogleFinanceData('Microsoft'),YahooFinanceData('Apple'),'2012-03-14')
它不是这样使用的:
compare_stocks('Tree',123,'bla')
问题是:我如何让人们知道他们可以使用哪些stock1
课程stock2
?我是否应该编写一个文档字符串,"stock1 and stock2 ought to have a method get_stock"
并且人们必须自己查看源代码?或者我是否将所有正确的类放入一个模块并在文档字符串中引用该文件?