如何在类上设置默认属性访问权限?

时间:2012-09-06 16:19:00

标签: python

Python(2.7)新手在这里。我想要做的是引用一个类的实例,将给定属性作为'default'返回,而不必指定该属性。我想这样做是因为绝大多数时候我引用一个实例,就是访问这个属性。

例如,假设我有几个类来描述一本书:

class book:
    def __init__(self):
        self.title = ''
        self.author = ''
        self.page = {}

class page:
    def __init__(self):
        self.text = ''
        self.length = 0

我创建了一个实例并用一本书的内容填充它:

...    
war_and_peace = book()
page_count = 0
for page in pages:  #Let's say pages is a list of strings each of a page of the book
    pagenum += 1
    war_and_peace.page[pagenum] = page

现在在程序的其余部分中,99.9%的时间我引用了页面的文本。因此,为了让我的生活更轻松,我希望能够使用以下方式引用页面:

if 'Anna' in war_and_peace[15]:
    ...

而不是

if 'Anna' in war_and_peace.page[15].text:
    ...

我怎么能这样做? (对不起,如果已经回答;我可能使用了错误的搜索条件!)

谢谢!

1 个答案:

答案 0 :(得分:10)

book上的__getitem__覆盖会为您提供:

def __getitem__(self, item):
    return self.page[item].text