python class里面的全局变量问题

class Test:

def __init__(self,name='testA'):

self.x = 'age'

self.name = name

self.start()

def ex(self):

global oo

oo = 'this is test'

def start(self):

global oo

print oo

Test()
请问 如何print oo变量??另外除了使用全局变量还有没有其他方法print oo

class  Test:

   def __init__(self,name='testA'):
       self.x = 'age'
       self.name = name
       self.oo="this is test"
       self.start()

   def ex(self):
       oo = 'this is test'

   def start(self):
       print oo

Test()追问

关键是我oo变量是在 ex方法内获得的值。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-30

你在ex里面定义的oo,所以你得先执行过ex之后才能执行start。

class  Test:
  def __init__(self,name='testA'):
    self.x = 'age'
    self.name = name
    self.ex() #加上这个
    self.start()
  def ex(self):
    global oo
    oo = 'this is test'
  def start(self):
    print oo
   
t=Test()

如果不适用全局变量的话,你可以self.oo:

class  Test:
  def __init__(self,name='testA'):
    self.x = 'age'
    self.name = name
    self.ex()
    self.start()
  def ex(self):
    self.oo = 'this is test'
  def start(self):
    print self.oo
   
t=Test()

本回答被提问者采纳
第2个回答  2019-10-29
你在ex里面定义的oo,所以你得先执行过ex之后才能执行start。
12345678910111213class Test: def __init__(self,name='testA'): self.x = 'age' self.name = name self.ex() #加上这个 self.start() def ex(self): global oo oo = 'this is test' def start(self): print oo t=Test()
如果不适用全局变量的话,你可以self.oo:
123456789101112class Test: def __init__(self,name='testA'): self.x = 'age' self.name = name self.ex() self.start() def ex(self): self.oo = 'this is test' def start(self): print self.oo t=Test()
第3个回答  2013-06-09
因为你定义oo是在self.ex(self)这个函数里,所以在这个函数被执行前,global里并没有 oo这个变量。

如果你明白这个道理就知道了怎么去打印你的oo了。

简单的说这样
t=Test()
t.ex()
t.start()