【发布时间】:2020-10-07 15:19:54
【问题描述】:
在使用 C# 几年后,我正在学习 python(3)。因此,我正在用 python 编写一些家庭项目,但我遇到了一些我似乎无法弄清楚如何在 python 中执行的问题。
假设我有一个像这样的简单类:
class SomeItem:
def __init__(self, var1, var2, var3):
# Instance Variable
self.var1= var1
self.var2= var2
self.var3 = var3
在我的代码中的某个时刻,我使用这个类将一堆它们放在一个列表中;
list_of_SomeItems = []
list_of_SomeItems.append(SomeItem("apple","banana", "pear"))
list_of_SomeItems.append(SomeItem("fruit","candy", "drinks"))
# so on and so forth
return list_of_SomeItems
但现在是我似乎无法弄清楚的部分
在某个时候,我想创建一个函数来获取这些SomeItems 的列表并使用 is 进行处理。
def name_of_function(interval=1.0, someItemsList):
for item in someItemsList:
print(item.var1)
但显然此时它不知道item 有一个var1,因为我没有告诉函数列表必须是SomeItem 对象。
在我的函数中声明列表并将该参数与类关联的正确方法是什么?
编辑 固定的; 正如@chepner 和@Perfect 提到的,错误是可选参数被放在了第一位(普通语法错误);修复该错误后;它按预期工作。
【问题讨论】:
-
csvList定义在哪里? -
您从未创建过
SomeItem的任何实例。此代码应生成TypeError,因为list.append不接受多个参数。 -
list_of_SomeItems.append(SomeItem("apple", "banana", "pear"))等 -
Python 是动态类型的;你没有有告诉函数
item有一个特殊的类型。如果item.var1能成功,它就会成功。 -
在
def name_of_function(interval=1.0, someItemsList):的定义行中,关键字参数应该跟在位置参数之后。所以这就像def name_of_function(someItemsList, interval=1.0