首页 > 代码库 > python 类 三:子类
python 类 三:子类
本文的部分例子来自于 <<python核心编程 第二版>>
子类如果不定义构造方法的话,那么自动继承父类的构造方法。
并且在创建子类的实例化对象的时候,父类的构造器将被自动调用。
如果想实现子类自己的构造方法,则要在子类里面去重载父类的构造器。
我们举例子分别说明之。
(1) 子类不创建自己的构造方法,自动继承父类的构造方法,并且在创建子类的实例化对象的时候,会自动的去调用父类的构造方法。
#coding:utf-8 class add_book_entry(object): ‘address book entry class‘ def __init__(self,nm,ph): self.name = nm self.phone = ph print ‘created instance for:‘,self.name def update_phone(self,newph): self.phone = newph print ‘updated phone# for :‘ ,self.name class empl_addr_book_entry(add_book_entry): ‘employee address book entry class‘ ‘‘‘子类并没有实现自己的构造方法,那么将自动继承父类的构造方法‘‘‘ def update_email(self,newem): self.email = newem print ‘updated e-mail address for:‘,self.email john = empl_addr_book_entry(‘john Doe‘,‘408-555-1212‘) # 实例化对象 # 会自动调用父类的构造方法 # 进行对员工的姓名和电话号码初始化 print john.name print john.phone john.update_email(‘john@doe.spam‘) # 调用子类自己的普通方法 # 进行更新电子邮件 print john.email
程序运行结果:
[root@puppet-master-231-test eg_4]# python2.7 class_subclass.py created instance for: john Doe john Doe 408-555-1212 updated e-mail address for: john@doe.spam updated e-mail address for: john Doe updated e-mail address for: 408-555-1212 john@doe.spam
(2) 子类实现自己的构造方法(并引用了父类的构造方法)
#coding:utf-8 class add_book_entry(object): ‘address book entry class‘ def __init__(self,nm,ph): self.name = nm self.phone = ph print ‘created instance for:‘,self.name def update_phone(self,newph): self.phone = newph print ‘updated phone# for :‘ ,self.name class empl_addr_book_entry(add_book_entry): ‘employee address book entry class‘ # 下面是 在子类中显示的调用了父类的构造方法,因为方法的调用一般是要绑定实例的 # 而这个并没有绑定实例(实例还没创建呢) # 那么,这种未绑定的方法的调用需要传递一个适当的实例即self给方法 def __init__(self,nm,ph,id,em): # 实现子类自己的构造方法 add_book_entry.__init__(self,nm,ph) # 在子类自己的构造方法中引用父类的构造方法 self.empid = id # 在子类的构造方法中增加父类没有的两个 self.email = em # 属性初始化对象 def update_email(self,newem): self.email = newem print ‘updated e-mail address for:‘,self.email john = empl_addr_book_entry(‘john Doe‘,‘408-555-1212‘,42,‘john@aaa.com‘) print john.name print john.phone print john.empid print john.email john.update_email(‘john@doe.spam‘) print john.email
程序运行结果:
[root@puppet-master-231-test eg_4]# python2.7 class_subclass.py created instance for: john Doe john Doe 408-555-1212 42 john@aaa.com updated e-mail address for: john@doe.spam john@doe.spam
本文出自 “linux与网络那些事” 博客,请务必保留此出处http://khaozi.blog.51cto.com/952782/1858541
python 类 三:子类
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。