【发布时间】:2015-09-28 13:10:28
【问题描述】:
当我尝试运行我正在编写的类的代码时,我得到一个AttributeError,但我不知道为什么。具体报错如下:
self.marker = self.markers[marker[1:]]
AttributeError: 'TTYFigureData' object has no attribute 'markers'
这是我正在写的课程的一部分:
class TTYFigureData(object):
"""
data container of TTYFigure
"""
def __init__(
self,
x, # x values
y, # y values
marker = "_.", # datum marker
plot_slope = True
):
self.x = x
self.y = y
self.plot_slope = plot_slope
self.set_marker(marker)
self.markers = {
"-" : u"None" ,
"," : u"\u2219"
}
def set_marker(
self,
marker
):
if marker in [None, "None", u"None", ""]:
self.plot_slope = True
self.marker = ""
elif marker[0] == "_":
self.marker = self.markers[marker[1:]]
else:
self.marker = marker
我哪里错了?
【问题讨论】:
-
您的代码风格有点……特殊("糟糕" 似乎有点贬义),这让人难以理解。但请注意,在初始化
self.markers之前 调用self.set_marker。鉴于self.markers似乎已修复,为什么不将其设为类属性? -
请为 Python 错误发布 完整的回溯。例如,对于这种情况,
set_marker()是从__init__调用的这一事实是判断出了什么问题的关键线索,回溯会显示这一点。 -
@jonsharpe 啊,就是这样!好眼力。感谢您的关注。代码很粗糙,我知道为每个函数参数换行的方法不被认为是标准的。这种方法真的那么糟糕吗,尤其是对于大量的论点?
-
@MartijnPieters 感谢您的提示。你说的很对。
-
@d3pd:是的,例如,它很难区分参数列表和方法体。请务必阅读Python styleguide,它提供了更好的选择。
标签: python class attributes attributeerror