Внутри класса доступ к значениям словаря в одной функции из другой

1

У меня есть модуль, в котором есть класс и две функции. func2 вызывается первым, и он создает словари из SQL-вывода. Я хочу получить доступ к значениям в этих словарях, чтобы записать их в файл внутри func1.

Я попытался найти ответы, но не смог найти мой сценарий, поэтому разместил этот вопрос.

import sys
import os 
import abc as var

class test():

        def func1(self,A,B,C):
                csv=sample.csv
                print>>csv,"Value in dict from other function,",<not sure how to call>.tgt_dict3['table_name']
                <do something else>

        def func2(self,x,y,z):
                <do something not related to issue>
                #Call function collect_var and pass same arguments which this function received
                #This function takes input and runs query on SQL and returns dictionaries with column name and values
                (dict1,dict2,dict3)=var.collect_var(x,y,z)  

                 tgt_dict1=dict1[0]
                 tgt_dict2=dict2[0]
                 tgt_dict3=dict3[0]
Теги:

1 ответ

0

Как и juanpa.arrivillaga, вы можете либо передать словари в качестве аргументов, либо сделать их атрибутами class/object. Поскольку вы их не возвращаете, я буду считать, что они должны быть атрибутами класса. Это можно сделать, как показано ниже. Я буду честен, хотя, я не верю, что вы достаточно пристально посмотрели, прежде чем задавать этот вопрос, поскольку это можно было бы найти в любом учебнике по классу.

import sys
import os 
import abc as var

class test():
    tgt_dict1 = {}
    tgt_dict2 = {}        
    tgt_dict3 = {}

    def func1(self,A,B,C):
            csv=sample.csv
            print>>csv,"Value in dict from other function,",test.tgt_dict3['table_name']
            <do something else>

    def func2(self,x,y,z):
            <do something not related to issue>
            #Call function collect_var and pass same arguments which this function receive
            #This function takes input and runs query on SQL and returns dictionaries with column name and values
            (dict1,dict2,dict3)=var.collect_var(x,y,z)  

             test.tgt_dict1=dict1[0]
             test.tgt_dict2=dict2[0]
             test.tgt_dict3=dict3[0]
  • 0
    Хм, вы на самом деле не используете переменные класса в вашем методе. Кроме того, почему бы не переменные экземпляра? Я думаю, что это более разумное предположение вместо переменных класса
  • 0
    Обзор должен был сработать, но я изменил его, чтобы он был явным. Причина использования статического класса по сравнению с экземпляром заключается в том, как они определяли функции и как они выглядели, как они могут быть вызваны.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню