自定义字符串表示:__str__方法 [Python]
时间:2008-09-29 来源:lvDbing
#!/usr/bin/env python |
Print1
Enter phone number in the form (123) 456-7890: |
方法__init__接收一个形如"(xxx) xxx-xxxx"的字符串。字符串中的每个x都是电话号码的一个位数。方法对字符串进行分解,并将电话号码的不同部分作为属性存储。
方法__str__是一个特殊方法,它构造并返回PhoneNumber类的一个对象的字符串表示。解析器一旦遇到如下语句:
print phone
就会执行以下语句:
print phone.__str__()
程序如果将PhoneNumber对象传给内建函数str,或者为PhoneNumber对象使用字符串格式化运算符%(例如"%s"%phone),Python也会调用__str__方法。
test函数从用户处请求一个电话号码,新建一个PhoneNumber对象,并打印对象的字符串表示。记住,假如模块作为一个单独的程序运行(即用户对模块调用Python解析器),Python就会将"__main__"指派给命名空间的名称(保存在内建变量__name__中)。如果PhoneNumber.py作为单独的程序运行,就会调用函数test()。
大多数Python模块都采用了这种机制:定义一个driver函数,检测模块的命名空间以执行函数。这样做的好处在于,模块作者可为模块定义不同的行为,具体由模块的使用背景决定。如果另一个程序导入模块,__name__的值就会是模块名(例如"PhoneNumber"),而test函数不会执行。如果模块作为单独的程序运行,__name__的值是"__main__",test函数会执行。