文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>自定义字符串表示:__str__方法 [Python]

自定义字符串表示:__str__方法 [Python]

时间:2008-09-29  来源:lvDbing

Python能用print语句输出内建数据类型。有时,程序员希望定义一个类,要求它的对象也能用print语句输出。Python类可定义特殊方法__str__,为类的对象提供一个不正式的字符串表示。如果类的客户程序包含以下语句:   print objectOfClass   那么Python会调用对象的__str__方法,并输出那个方法所返回的字符串。   Code1  

#!/usr/bin/env python

class PhoneNumber:
        def __init__(self,number):
                self.areaCode = number[1:4]
                self.exchange = number[6:9]
                self.line=number[10:14]

        def __str__(self):
                return "(%s) %s-%s" % (self.areaCode, self.exchange, self.line)

def test():
        newNumber = raw_input("Enter phone number in the form (123) 456-7890: \n")
        phone = PhoneNumber(newNumber)
        print "The phone number is:",
        print phone

if __name__ == "__main__":
        test()

Print1

Enter phone number in the form (123) 456-7890:
(345) 234-5461
The phone number is: (345) 234-5461

 

方法__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函数会执行。

 

 

相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载