Python 类型错误:';沉子';对象是不可调用的-在每个循环中-如果我更改变量名则有效

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

有3个类(伸卡、邦德、系列)和一个测试脚本。如果我在for-each循环中将变量名sinker更改为xsinker,测试脚本就可以正常工作。如果我将sinker=sinker()移动到for-each循环之外,它也会“起作用”。我真的很想理解为什么xsinker=sinker()有效而sinker=sinker()无效的细微差别。Thx

伸卡球

邦德

series.py

testcsv.py--这不起作用

"""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
将保持不变。如果将其指定给
伸卡球
,则旧的含义将丢失。