我想我对python3中的面向对象编程有点困惑。你知道吗
我想弄清楚的是这里发生了什么:
class Library:
def __init__(self, some_list):
self.__articles_dict = {}
def create_article_objects(self, some_list):
for tuple in some_list:
for single_article in pair:
if single_article not in self.__articles_dict.keys():
article = Article(single_article)
self.__articles_dict[single_article] = article
some_list
是一个元组列表,其中包含两个相互关联的项目名称(类似于Google链接)。在这里,我从我在另一个类(称为Article
)中创建的文章创建一个库。到现在为止,一直都还不错。你知道吗
我的问题是关于这一部分:
def get_titles(self):
"""
returns a list of all the network's article's titles
:return: a list of strings representing the articles' titles
"""
titles_list = []
# run on the dict's keys (=article titles)
for article in self.__articles_dict.keys():
titles_list.append(article.get_title)
return titles_list
get_title
函数是在Article
类中定义的,这意味着它是一个article对象方法。你知道吗
据我所知,我的迭代是在strings(for article in self.__articles_dict.values():
)上进行的,那么Python为什么允许我在“article”上使用get_title()
,而“article”只是一个字符串呢?你知道吗
谢谢你们的帮助,伙计们。你知道吗
您的迭代不一定在字符串上。你知道吗
字典键可以是任何类型。很可能,
Article
的__articles_dict
的键是Article
类的实例。你知道吗此外,你还写道:
如果Python允许所有的
get_title
都在article
上,那么确切地说article
不是一个字符串。这正好意味着article
有一个get_title
方法,而字符串没有。你知道吗您可以通过调用
type
轻松检查article
的类型:这里有一个例子,说明任何东西都可以是钥匙。你知道吗
相关问题 更多 >
编程相关推荐