如何在方法之外打印方法的结果

时间:2013-07-23 04:45:33

标签: python class methods

我正在尝试获取python类的东西,我写了这个小脚本,它接受用户输入:

import sys


class Uttenhaler_setup:
    Fbol=5.01333e-10
    c=2.99792458e+8
    L=1000
    star_list=[]
    dusty_models=np.array([]) #array of all the dusty models
    incoming_stars='' #List of incoming stars


    def __init__(self):
        """Initiates the below modules."""
        self.star_catalog()
        self.InputKey()


    def star_catalog(self):
        """Imports the star catalog"""
        try:
            star_catalog=raw_input('Input pathname of stellar catalog: ')
            with open(star_catalog) as incoming_stars:
                for line in incoming_stars.readlines():
                    x=[item for item in line.split()]
                    self.star_list.append(x) #Appends the individual star-IDs to the empty array star_list.
            print 'Stars imported successfully.'
        except IOError:
            print 'Star import unsuccessful. Check that the star catalog file-path is correct. Program exiting now.'
            sys.exit()



if __name__=='__main__':
    Uttenhaler_setup()

我似乎无法在我的方法之外找到正确的语法来打印self.star_list的结果。只是找人指出我的错误。感谢。

3 个答案:

答案 0 :(得分:2)

执行my_stars = Uttenhaler_setup()然后print my_stars.star_list

之类的操作

答案 1 :(得分:1)

您的问题是您已将star_list设置为类变量,而不是实例变量。如果您在star_list方法中将self.star_list声明为__init__,则可以按如下方式访问star_list

tst = Uttenhaler_setup()
print(tst.star_list)

目前,您需要访问star_list

print(Uttenhaler_setup.star_list)

不同之处在于,类变量可作为共享变量用于该类的所有实例。如果更改类变量的值,则该类的所有实例都将看到更改。但是,实例变量是单个实例的本地变量或类的实例化。更改实例变量时,更改对于类的特定实例是本地的。

通常,您会希望将几乎所有变量都作为实例变量。使用类变量来表示对于类的所有实例都应该相同的常量。

答案 2 :(得分:0)

如果在课程Uttenhaler_setup内,您可以:

print 'star_list=%r' % (self.star_list)

如果在课程Uttenhaler_setup之外,您可以:

var = Uttenhaler_setup()
print 'star_list=%r.' % (var.star_list)