这个问题与我之前的问题 https://stackoverflow.com/questions/65021583/list-comprehensions-with-class-objects以及比尔的回应。
我在 subfile.py 中有一个名为 StrucData 的类
class StrucData:
def __init__(self, name):
self.name=name
def loadData(self, size=1, cost=1):
self.size=size
self.cost=cost
return self
在主文件中我:
- 调用子文件,
- 创建数据名称列表
- 循环遍历列表来实例化对象;和
- 使用每个对象的“loadData”方法加载数据(我使用相同的“大小”和“成本”来使这个示例变得简单。)
一次性使用列表理解:
# in the main file
from subfile import StrucData
listIndex=['data1','data2','data3']
listObjects = [StrucData(idx).loadData(size=3, cost=4) for idx in listIndex]
输出是
listObjects=[object1, object2, object3]
in which each object contains its attributes defined in the subfile.py (name, size, cost).
我想知道的是,当我使用与以下相同的代码定义一个对象时
x=StrucData(listIndex[0]).loadData(size=3, cost=4)
it contains the method 'loadData' too.
谁能向我解释一下为什么会发生这种情况?
I use anaconda3 distribution of Spyder, the version information is