我正在尝试获取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的结果。只是找人指出我的错误。感谢。
答案 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)