首页 > 解决方案 > 从python中的外部函数访问类内的变量

问题描述

我需要在某些条件下清除列表,并且包含列表的变量位于类函数内。我需要从类函数外部访问列表。

Class A:
   def insideclass(self):
       values=[]
       for i in range(10):
           values.append(func())

def func():
    if datetime.time.now()=="2021-06-25 10:15:52.889564":
       values.clear()
return datetime.time.now()


classvariable=A()
classvariable.insideclass()

我不想使用全局变量,因为我在类中有不同的方法具有相同的变量名。

标签: pythonclassmethodspython-class

解决方案


values通过将列表作为参数传递来更新:

class A:
   def insideclass(self):
       values=[]
       for i in range(10):
           func(values)

def func(values):
    now = datetime.time.now()
    if now == "2021-06-25 10:15:52.889564":
        # You can't compare a datetime to a string...
        values.clear()
    values.append(now)

如果满足条件并在类方法中执行清除,则可以抛出异常

class A:
   def insideclass(self):
       values=[]
       for i in range(10):
           try:
               values.append(func())
           except:
               values.clear()

def func():
    now = datetime.time.now()
    if now == "2021-06-25 10:15:52.889564":
        raise Exception('This should be a more specific error')
    else:
        return now

推荐阅读