Python 在另一个函数中访问函数返回值

Python 在另一个函数中访问函数返回值,python,oop,Python,Oop,我有一个这样的程序,有一个StatFind类。这个类有三个方法。ncount方法返回字典列表:“finallist”。我需要将列表中的每个字典添加到mongodb数据库中 如何访问inserttomongo()方法中的finallist 代码当前给出了一个名称错误: s.inserttomongo(finallist) #=> NameError: name 'finallist' is not defined 这是我的密码: !/usr/bin/python import pymong

我有一个这样的程序,有一个StatFind类。这个类有三个方法。ncount方法返回字典列表:“finallist”。我需要将列表中的每个字典添加到mongodb数据库中

如何访问inserttomongo()方法中的finallist

代码当前给出了一个名称错误:

s.inserttomongo(finallist)
#=> NameError: name 'finallist' is not defined
这是我的密码:

!/usr/bin/python
import pymongo,json
from datetime import date, timedelta
from collections import defaultdict
import os, sys,time,csv,glob

tsvs = glob.glob(sys.argv[1])

class StatFind:
  def __init__(self,tsvs):
    self.tsvs=tsvs

  def ncount(self, tsvs):
    if True:
      finallist=[]
      for path in tsvs:
         ....Someprocess....
         returns a list
      return finallist

  def other(self):
    samplestring= "something random"
    print samplestring

  def inserttomongo(self, finallist):
     self.finallist=ncount().finallist
     mongo=pymongo.Connection('localhost')
     mongo_db=mongo['sample']
     mongo_collection=mongo_db['users']
     for dictvalue in self.finallist:
      #  for dictvalue in ncount(tsvs):
       insert_id=mongo_collection.insert(dictvalue)

s=StatFind(tsvs)
s.ncount(tsvs)
s.other()
s.inserttomongo(finallist)
请特别阅读

您将在网上找到大量优秀的OO Python教程,如或

获取函数的返回值 例如,通过在命令行上运行python来使用解释器:

➤ python
Python 2.7.2+ (default, Jul 20 2012, 22:15:08) 
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> def square(x):
...     return x*x
... 
>>> four_squared = square(4)
>>> four_squared
16
清理代码: 你的代码没有意义

  • 什么是
    nmaidcount().finallist
  • 您在程序中在哪里定义
    finallist
  • 如果为真,为什么有
    ?永远都是这样
    这就是我认为你的意思:

    tsvs = glob.glob(sys.argv[1])
    
    class StatFind:
      # This is the instance initialiser. 
      def __init__(self,tsvs):
        self.tsvs=tsvs 
    
        # here we define every instance of StatFind to have an attribute
        # called 'finallist' which will be accessible by all methods
        self.finallist = [] 
    
        # We do our initialisation here, when we initialise our object,
        # instead of in a separate method.
        for path in self.tsvs:
          finalist.append(do_something(path))
    
      def inserttomongo(self): 
        # The 'self' parameter is automagically set up by python to 
        # refer to the instance when 'insertmongo()' is called on an instance
        # for example, myInstance.insertmongo(), in which case 
        # self will be 'myInstance'
        mongo=pymongo.Connection('localhost')
        mongo_db=mongo['sample']
        mongo_collection=mongo_db['users']
    
        for dictvalue in self.finallist: 
          insert_id=mongo_collection.insert(dictvalue)
    
    s=StatFind(tsvs) #This will call __init__() behind the scenes.
    s.inserttomongo()
    

    我猜可能对你有帮助。finallist是一个参数。您需要将一个参数传递给您的方法,如果该方法是一个标识符而不是一个常量(在您的例子中是一个名为“finallist”的标识符),则需要首先定义它!你好流程和附加到finallist是另一种方法。nmaidcount是一个输入错误,应该是ncount。我似乎仍然没有找到解决办法。请help@user1189851听起来您对Python和一般编程都是新手。我能给你的最好建议(除了亲自指导你)是运行命令行解释器(
    python
    在命令行上),并用它来完成教程。您还可以尝试这样的想法,即函数可以由其返回值替换。例如,如果有一个函数
    def foo(x):return x*x
    ,则可以用结果替换对该函数的任何调用。例如:
    my_variable=foo(4)
    my_variable=16
    tsvs = glob.glob(sys.argv[1])
    
    class StatFind:
      # This is the instance initialiser. 
      def __init__(self,tsvs):
        self.tsvs=tsvs 
    
        # here we define every instance of StatFind to have an attribute
        # called 'finallist' which will be accessible by all methods
        self.finallist = [] 
    
        # We do our initialisation here, when we initialise our object,
        # instead of in a separate method.
        for path in self.tsvs:
          finalist.append(do_something(path))
    
      def inserttomongo(self): 
        # The 'self' parameter is automagically set up by python to 
        # refer to the instance when 'insertmongo()' is called on an instance
        # for example, myInstance.insertmongo(), in which case 
        # self will be 'myInstance'
        mongo=pymongo.Connection('localhost')
        mongo_db=mongo['sample']
        mongo_collection=mongo_db['users']
    
        for dictvalue in self.finallist: 
          insert_id=mongo_collection.insert(dictvalue)
    
    s=StatFind(tsvs) #This will call __init__() behind the scenes.
    s.inserttomongo()