Python:有没有更简单的方法来执行此脚本?

时间:2019-08-16 16:58:05

标签: python

我正在尝试使self.id显示准确的值。我做到了,但我想知道如何改善它?

Fragment

我希望获得确切的价值,但我不确定如何使它更智能。

3 个答案:

答案 0 :(得分:2)

如果您只是想缩短它,可以使用self.id值和要将其更改为的值的列表。对于第一个功能:

def OnClickNextPage(self):
    possible_ids = [36, 37, 1020, 2020, 3019, 5015]
    change_id = [37, 1020, 2020, 3019, 5015, 7019]
    if self.id in possible_ids:
        self.id = change_id[possible_ids.index(self.id)]
        return self
    else:
        return self

确保返回self,以便它为对象更新self.id

答案 1 :(得分:2)

您可以将ID列为列表,并跟踪您所在的页面(索引)。将id设置为属性,以便您可以根据需要轻松地基于当前索引进行计算:

class Pages:
    def __init__(self, ids):
        self.ids = ids
        self.index = 0

    @property
    def id(self):
        return self.ids[self.index]

    def OnClickNextPage(self):
        self.index += 1

    def OnClickPrevPage(self):
        self.index -= 1

pages = Pages([36, 37, 1020, 2020, 3019, 5015])
print(pages.id)
pages.OnClickNextPage()
print(pages.id)
pages.OnClickNextPage()
print(pages.id)
pages.OnClickPrevPage()
print(pages.id)

这将输出:

36
37
1020
37

答案 2 :(得分:0)

您可以列出页面的有序列表,然后移至列表的n + 1或n-1元素。这里唯一的复杂性是知道您当前的位置。如果可能的话,您可以简单地存储n和id。如果不可能,则可以使用index方法找到n。

list_of_pages.index(id)

这不是很快,但是需要维护的代码更少。