如何从python中的类构造函数访问列表,以便在另一个类方法中使用? 例如:
Class Data():
def __init__(self):
list1 = ["a", "e", "i", "o", "u"]
def __length__():
length = len(list1)
print(length)
打印当前列表的长度。
答案 0 :(得分:3)
注意传递给每个实例方法的self
参数。这是实例本身。它就像C ++或Java中的this
,只是显式传递。你应该明确地使用它(如有疑问,请输入import this
)。
所以,正如其他海报所提到的,你需要这样的东西:
class Data():
def __init__(self):
self.vowels = ['a', 'e', 'u', 'i', 'o']
def __len__(self): # if you want to use len() on your object
return len(self.vowels) # refer to the list defined in constructor
答案 1 :(得分:2)
你需要使用self attribue,根据python代码样式"Always use self for the first argument to instance methods.",试试这个:
class Data():
def __init__(self):
self.list1 = ["a", "e", "i", "o", "u"]
def __length__(self):
length = len(self.list1)
print(length)
答案 2 :(得分:1)
要解决您的问题,您应该使用实例属性:
class Data():
def __init__(self):
self.list1 = ["a", "e", "i", "o", "u"]
def __length__(self):
length = len(self.list1)
print length
这里的想法不是你“访问构造函数”,而是访问该类实例的属性。课程Data
可能包含以下属性:list1
,'list2 ,
元音,
辅音`,您可以为其命名。您将需要在构造函数中设置它们,然后您可以在类方法中更改或访问它们。
但也许你可以做得更好。考虑这两个想法:
__length__
?或许更具描述性(并且不那么滥用那些下划线)的东西可能有助于例如def print_number_of_vowels(self)
。Data
非常模糊,考虑使其更具体,例如AlphabetData
。也许更像是:
class AlphabetData():
def __init__(self):
self.vowels = ["a", "e", "i", "o", "u"]
def print_number_of_vowels(self):
print len(self.vowels)