我正在尝试访问另一个函数中声明的变量,但我得到了
ERROR:
AttributeError: 'Myclass1' object has no attribute 'myDictIn'
我使用的代码如下:
class Myclass1(object):
def __init__(self):
pass
def myadd(self):
x=self.myDictIn # tried accessing variable declared in another function
return x
def mydict(self): #variable declared in this function
myDictIn={1:[1,2,3,4],3:[4,5,6,7]}
self.myDictIn= myDictIn
return myDictIn
inst=Myclass1() # Created instance
inst.myadd() # Accessing function where I am using an variable declared in another function
我还尝试将其声明为全局
def mydict(self): #variable declared in this function
global myDictIn
myDictIn={1:[1,2,3,4],3:[4,5,6,7]}
self.myDictIn= myDictIn
return myDictIn
但仍然有相同的错误
请帮帮我.... 实际上我需要访问一个函数中生成的变量并在另一个函数中使用它.... 我试过.....
所以我必须能够访问在一个函数中生成的varibale并在另一个函数中使用它。请帮我找一个答案
答案 0 :(得分:0)
您的实例从不调用方法mydict。请记住,python是逐行解释的,self.myDictIn将不会在那时被分配。
相反,为什么不在构造函数中编写self.myDictIn = ....
答案 1 :(得分:0)
在myadd(self)中,将myDictIn声明为全局。如您所知,变量需要在使用之前声明/分配。如果程序在分配之前遇到myDictIn,则会抛出错误。所以请在程序遇到myDictIn之前声明myDictIn。
希望这有帮助!
答案 2 :(得分:0)
看起来你只需要getter
和setter
,你可以使用python properties
来做到这一点:
class Myclass1(object):
def __init__(self, dict_value):
self.myDictIn = dict_value
@property
def myDictIn(self):
print(self.__myDictIn)
return self.__myDictIn
@myDictIn.setter
def myDictIn(self, value):
if not isinstance(value, dict):
raise TypeError("dict_value must be a dict")
self.__myDictIn = value
dict_value = {1: [1, 2, 3 ,4], 3: [4, 5, 6, 7]}
inst = Myclass1(dict_value)
inst.myDictIn # {1: [1, 2, 3 ,4], 3: [4, 5, 6, 7]}
这样,您仍然可以轻松更改MyDictIn
inst.myDictIn = {1: [1, 2, 3]}
inst.myDictIn # {1: [1, 2, 3]}