类与实例

来源:互联网 发布:一人一首网络成名曲 编辑:程序博客网 时间:2024/05/16 10:27
class AssrBookEntry(object):    #类定义    'address book entry class'    def __init__(self,nm,ph):    #定义构造器        self.name=nm            #设置name        self.phone=ph            #设置phone        print("created instance for:",self.name)    def updatePhone(self,newph): #定义方法        self.phone=newph        print("Updated phone # for:",self.name)john = AssrBookEntry("John Doe","408-555-1212")   #为John Doe 创建实例jane = AssrBookEntry("Jane Doe","650-555-1212")   #为Jane Doe 创建实例print("john.name:",john.name)print("john.phone",john.phone)print("jane.name",jane.name)print("jane.phone",jane.phone)john.updatePhone("400-100-1111")print("john.phone:",john.phone)created instance for: John Doecreated instance for: Jane Doejohn.name: John Doejohn.phone 408-555-1212jane.name Jane Doejane.phone 650-555-1212Updated phone # for: John Doejohn.phone: 400-100-1111Process finished with exit code 0在AssrBookEntry类的定义中,定义了两个方法:__init__()和updatePhone()。__init__()在实例化时被调用。传给AssrBookEntry()的参数完全与__init__()接收到的参数是一样的。在上面的__init__()中,需要的参数是nm和ph,他们分别表示名字和电话号码。__init__()在实例化时,设置这两个属性,以便在实例从实例化调用中返回时,这两个属性对程序员是可见的。updatePhone()方法的目的是替换地址本条目的电话号码属性。
john = AssrBookEntry("John Doe","408-555-1212")   #为John Doe 创建实例jane = AssrBookEntry("Jane Doe","650-555-1212")   #为Jane Doe 创建实例
这就是实例化调用,他会自动调用__init__(),self把实例对象自动传入__init__()

print("john.name:",john.name)print("john.phone",john.phone)print("jane.name",jane.name)print("jane.phone",jane.phone)
一旦实例被创建后,就可以证实一下,在实例化过程中,我们的实例属性是否确实被__init__()设置了。


john.updatePhone("400-100-1111")print("john.phone:",john.phone)

updatePhone()方法需要一个参数:新的电话号码,在updatePhone()之后,立即检查实例属性,可以证实已生效。


原创粉丝点击