有没有办法从另一个函数访问在一个函数中创建的类的属性?你知道吗
class Component(object):
Name = ''
Num = 100
def __setattr__(self, name, value):
object.__setattr__(self, name, value)
def one():
exec('AAA' + '=Component()')
AAA.Name = 'AAA'
AAA.Num = AAA.Num * 2
print '1', AAA.Name, AAA.Num
def two():
print '2', AAA.Name, AAA.Num
one()
two()
我得到一个“NameError:全局名称'AAA'未定义”
一种可能的解决方案:
创建一个全局列表(tuple、dict或任何合适的数据结构),并将实例添加到函数1的列表中,然后从函数2中的列表中获取实例。你知道吗
但是,不建议使用全局变量。你知道吗
类级属性属于该类,因此在该类的所有实例之间共享。你知道吗
如果您希望类的不同实例具有不同的
name
和num
属性(顺便说一句,您应该为实例使用小写的属性名称),那么应该将它们添加为实例属性。您可以使用类名访问类属性(例如Component.NUM
)。你知道吗在
function
之外实例化class
,并在函数中使用该类实例。代码如下:相关问题 更多 >
编程相关推荐