如何从 python 中的类构造函数访问列表以在另一个类方法中使用?例如:
Class Data():
def __init__(self):
list1 = ["a", "e", "i", "o", "u"]
def __length__():
length = len(list1)
print(length)
打印当前列表的长度。
如何从 python 中的类构造函数访问列表以在另一个类方法中使用?例如:
Class Data():
def __init__(self):
list1 = ["a", "e", "i", "o", "u"]
def __length__():
length = len(list1)
print(length)
打印当前列表的长度。
注意self
传递给每个实例方法的参数。它是实例本身。就像this
在 C++ 或 Java 中一样,只是显式传递。你应该明确地使用它(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
您需要使用 self 属性,根据 python 代码样式“始终使用 self 作为实例方法的第一个参数”。, 尝试这个 :
class Data():
def __init__(self):
self.list1 = ["a", "e", "i", "o", "u"]
def __length__(self):
length = len(self.list1)
print(length)
要解决您的问题,您应该使用实例属性:
class Data():
def __init__(self):
self.list1 = ["a", "e", "i", "o", "u"]
def __length__(self):
length = len(self.list1)
print length
这里的想法不是您正在“访问构造函数”,而是您正在访问此类实例的属性。该类Data
可能具有以下属性:list1
“list2 ,
vowels ,
consonants”,您可以命名它。您需要在构造函数中设置这些,然后您可以在类方法中更改或访问它们。
但也许你可以做得更好。考虑以下两个想法:
__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)