在一个类里面的def里面打印变量

时间:2016-07-11 14:03:11

标签: python function class python-3.4

我是面向对象编程的新手,我想做什么基本上是在一个类里面打印一个变量,我认为这可能是一个非常简单的答案,但我只是想弄明白,谢谢为了帮助,继承我的代码:

class test():
    def test2():
        x = 12
print(test.test2.x)

这给了我以下错误:

Traceback (most recent call last):
  File "/home/vandeventer/x.py", line 4, in <module>
    print(test.test2.x)
AttributeError: 'function' object has no attribute 'x'

当我尝试:

class test():
    def test2():
        x = 12
print(test.x)

我得到:

Traceback (most recent call last):
  File "/home/vandeventer/x.py", line 4, in <module>
    print(test.x)
AttributeError: type object 'test' has no attribute 'x'

欢迎任何帮助

2 个答案:

答案 0 :(得分:5)

你无法做你想做的事;局部变量仅在函数调用的生命周期中存在 。它们不是函数的属性,也不以任何其他方式在调用之外可用。它们在您调用函数时创建,在函数退出时再次销毁。

可以设置函数对象的属性,但这些属性独立于本地人:

>>> class test():
...     def test2():
...         pass
...     test2.x = 12
...
>>> test.test2.x
12

如果您需要保留一个函数值,或者返回值,或者将其赋值给持续时间超过函数的值。实例上的属性是保存内容的常见位置:

>>> class Foo():
...     def bar(self):
...         self.x = 12
...
>>> f = Foo()
>>> f.bar()
>>> f.x
12

答案 1 :(得分:1)

如果要打印该值,还可以使用return语句和self参数。

    class test():
        def test2(self):
            x = 12
            return x


     test = test()
     print(test.test2())

我不知道这是否能完全回答您的问题,但这是打印x的一种方法。