打印类中的变量

时间:2017-02-25 21:38:46

标签: python python-2.7 class

我是python的新手,我对大部分内容都有所了解,但我正在尝试理解课程而且我无法使代码工作。它根本没什么,只是为了帮助我理解它

class Phone(object):
    def __init__(self, words):
        self.words = words
    def phones(self):
        ph = ['Samsung', 'Apple', 'google', 'moto', 'LG']
a = Phone.phones(ph)
print a

我跟随Zed A. shaw的书lpthw

错误代码是

Traceback (most recent call last):
  File "ex40.py", line 34, in <module>
    a = Phone.phones(ph)
NameError: name 'ph' is not defined

2 个答案:

答案 0 :(得分:3)

目前从类外部打印ph是不可能的,因为它是一个局部变量,并在函数完成时被销毁。

要使外部世界可以访问它,您需要将其声明为self.ph或从函数返回它:

self.ph:

class Phone(object):
    def __init__(self, words):
        self.words = words
        self.ph = ['Samsung', 'Apple', 'google', 'moto', 'LG']

a = Phone("word1, word2")

print a.ph # ['Samsung', 'Apple', 'google', 'moto', 'LG']

返回:

class Phone(object):
        def __init__(self, words):
            self.words = words
        def phones(self):
            ph = ['Samsung', 'Apple', 'google', 'moto', 'LG']
            return ph

a = Phone("word1, word2").phones()

print a # ['Samsung', 'Apple', 'google', 'moto', 'LG']

答案 1 :(得分:1)

此位错误a = Phone.phones(ph)您必须先初始化类

a = Phone(['foo', 'bar'])

然后你可以去

print a.phones()

但那也不行!函数phones不会返回任何内容 可能你想要它return ph

我猜你可能想要建立这样的东西:

class Phone(object):
    def __init__(self, words):
        self.words = words
    def phones(self):
        return self.words

a = Phone(['Samsung', 'Apple', 'google', 'moto', 'LG'])
print a.phones()