Python 类型错误:';沉子';对象是不可调用的-在每个循环中-如果我更改变量名则有效
有3个类(伸卡、邦德、系列)和一个测试脚本。如果我在for-each循环中将变量名sinker更改为xsinker,测试脚本就可以正常工作。如果我将sinker=sinker()移动到for-each循环之外,它也会“起作用”。我真的很想理解为什么xsinker=sinker()有效而sinker=sinker()无效的细微差别。Thx 伸卡球 邦德 series.py testcsv.py--这不起作用Python 类型错误:';沉子';对象是不可调用的-在每个循环中-如果我更改变量名则有效,python,for-loop,Python,For Loop,有3个类(伸卡、邦德、系列)和一个测试脚本。如果我在for-each循环中将变量名sinker更改为xsinker,测试脚本就可以正常工作。如果我将sinker=sinker()移动到for-each循环之外,它也会“起作用”。我真的很想理解为什么xsinker=sinker()有效而sinker=sinker()无效的细微差别。Thx 伸卡球 邦德 series.py testcsv.py--这不起作用 """This script imports series, bond and sinke
"""This script imports series, bond and sinker data from a csv file and prints it."""
import sys, csv
sys.path.append(r'C:\Users\a-itfeld\Google Drive\code\python\muniAnalytics\dataStructure')
from series import series
from bond import bond
from sinker import sinker
Data = csv.reader(open(r'C:\Users\a-itfeld\Google Drive\code\python\muniAnalytics\testScripts\Data.csv'), delimiter=',')
series = series()
bond = bond()
# series data
series.name = '2010FF'
series.deliveryDate = '11/3/2010'
series.datedDate = series.deliveryDate
series.firstCoupon = '15/6/2010'
series.tax = "Tax Exempt"
series.obligor = "NYW"
# bond data
bond.baseCusip = '647102F'
bond.suffixCusip = 'A0'
# add sinkers to bond
for r in Data:
sinker = sinker()
sinker.maturity, sinker.amount = r[0], float(r[1])
sinker.sinkerID = bond.cusip() + sinker.maturity
bond.addSinker(sinker)
# add bond to series
series.addBond(bond)
# print the bonds added to series
for b in series.bonds:
print(b.cusip(), b.maturity(), b.amount())
Traceback (most recent call last):
File "C:\Users\a-itfeld\Google Drive\code\python\muniAnalytics\testScripts\testCsv.py", line 30, in <module>
sinker = sinker()
TypeError: 'sinker' object is not callable
当然。是吗
sinker = sinker()
在for循环中
第一个调用可以工作,但是sinker并不绑定到您调用的函数,而是绑定到第一个调用的结果。这是不可调用的
比较以下情况:
def sinker():
return 42
xsinker = sinker()
xsinker = sinker()
xsinker = sinker()
xsinker = sinker()
# This one you can do as often as you want - sinker is untouched.
sinker = sinker()
# Now sinker isn't the function any longer, but is 42.
# That's why
sinker = sinker()
# fails: you cannot call 42.
当然。是吗
sinker = sinker()
在for循环中
第一个调用可以工作,但是sinker并不绑定到您调用的函数,而是绑定到第一个调用的结果。这是不可调用的
比较以下情况:
def sinker():
return 42
xsinker = sinker()
xsinker = sinker()
xsinker = sinker()
xsinker = sinker()
# This one you can do as often as you want - sinker is untouched.
sinker = sinker()
# Now sinker isn't the function any longer, but is 42.
# That's why
sinker = sinker()
# fails: you cannot call 42.
当然。是吗
sinker = sinker()
在for循环中
第一个调用可以工作,但是sinker并不绑定到您调用的函数,而是绑定到第一个调用的结果。这是不可调用的
比较以下情况:
def sinker():
return 42
xsinker = sinker()
xsinker = sinker()
xsinker = sinker()
xsinker = sinker()
# This one you can do as often as you want - sinker is untouched.
sinker = sinker()
# Now sinker isn't the function any longer, but is 42.
# That's why
sinker = sinker()
# fails: you cannot call 42.
当然。是吗
sinker = sinker()
在for循环中
第一个调用可以工作,但是sinker并不绑定到您调用的函数,而是绑定到第一个调用的结果。这是不可调用的
比较以下情况:
def sinker():
return 42
xsinker = sinker()
xsinker = sinker()
xsinker = sinker()
xsinker = sinker()
# This one you can do as often as you want - sinker is untouched.
sinker = sinker()
# Now sinker isn't the function any longer, but is 42.
# That's why
sinker = sinker()
# fails: you cannot call 42.
但是,如果您使用xsinker=sinker()并使用xsinker,它会工作吗?区别是什么?@itayfeldman区别是作业过程结束时的
sinker
。如果将结果分配给xsinker
,sinker
将保持不变。如果将其指定给sinker
,则旧的含义将丢失。但是,如果使用xsinker=sinker()并使用xsinker,它会工作吗?区别是什么?@itayfeldman区别是作业过程结束时的sinker
。如果将结果分配给xsinker
,sinker
将保持不变。如果将其指定给sinker
,则旧的含义将丢失。但是,如果使用xsinker=sinker()并使用xsinker,它会工作吗?区别是什么?@itayfeldman区别是作业过程结束时的sinker
。如果将结果分配给xsinker
,sinker
将保持不变。如果将其指定给sinker
,则旧的含义将丢失。但是,如果使用xsinker=sinker()并使用xsinker,它会工作吗?区别是什么?@itayfeldman区别是作业过程结束时的sinker
。如果将结果分配给xsinker
,sinker
将保持不变。如果将其指定给伸卡球
,则旧的含义将丢失。