【问题标题】:lists as argument and method calls列表作为参数和方法调用
【发布时间】:2017-03-08 04:29:44
【问题描述】:

希望有人可以提供帮助。我主要在 Java 中工作,并且有一项必须在 Python 中完成的任务,而我对此几乎一无所知。

我有一个正在读取的 CSV 文件,并已成功创建了每个项目的一个或多个列表。每行代表一个thingID、请求时间、请求时间、填充时间。我需要将它们放入优先队列中,运行它们并打印结果。虽然我没有比下面显示的更远,因为我显然不知道函数是如何工作的。整个 self 和 __init__ 的东西让我感到困惑,以及这种语言运行所需的一切。

def main():
    with open('things.csv', 'r') as file:
        reader = csv.reader(file)
        index = 0
        for row in reader:
            print(row)

main()

这给了我一个这样的数组列表:

['Thing1', '0', '1', '4']
['Thing2', '1', '1', '3']

我有另一个 Things.py(我不应该在一个 .py 中有多个类):

class Things(object):
    def __init___(self, row, thingInfo):
        self.row = row
        self.thingInfo = thingInfo

我尝试在__init__ 下方创建另一个def,但我无能为力。 我正在尝试分离列表对象的不同部分,以便我可以对它的各个部分进行操作,例如 ID、请求的时间等,但不知道如何执行此操作。我尝试了各种方法,但得到类型错误的属性错误。我完全不知所措。任何帮助将不胜感激。我只需要朝着正确的方向迈出几步,因为我已经完全碰壁了。

【问题讨论】:

  • Java 中的方法的操作与 Java 没有任何不同。 init 方法与 Java 类构造函数没有太大区别。目前还不清楚您要对 CSV 的每一行做什么
  • 而 Python 不在乎每个脚本是否有多个类...您的问题是如何导入 Things 类?
  • 如果你对 Python 一无所知,第一步应该是通过课程或教程学习它。 SO 不是教程服务。
  • 我投票决定将此问题作为离题结束,因为 SO 不是教程服务。

标签: python list function class


【解决方案1】:

列表解包可能是你想要的:

class Things(object):
    def doSomething(self):
        thing_id, time_of_request, time_requested, time_needed_to_fill = self.row
        # do whatever u want with the above variables

【讨论】:

  • 谢谢。这非常有帮助。
【解决方案2】:

希望此模板对您有所帮助:

class Things(object):

    def __init___(self, row, thingInfo):
        self.row = row
        self.thingInfo = thingInfo

    def doSomething(self, arg1, arg2): # beware the `self`
        for x in self.row:
            # do something with x, like:
            print(x)

# here is where you use Things
thing = Things([1, 2, 3], 'info')
thing.doSomething(1, 2)

【讨论】:

    【解决方案3】:

    您可以像这样对传递给Things.__init__() 的列表对象的不同部分进行索引(与Java 中相同):

    class Things(object):
        def __init___(self, row, thingInfo):
            self.row = row
            self.id = thingInfo[0]
            self.time_requested = thingInfo[1]
            self.another_thing = thingInfo[2]
            # etc ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-20
      • 2017-04-29
      • 2018-12-24
      • 1970-01-01
      • 2016-06-09
      • 2020-06-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多