python 类继承

创建一个类(类定义):

# !/usr/bin/env python
# -*- coding: utf-8 -*-
class AddrBookEntry(object): ##类定义
    def __init__(self,nm,ph): ##定义构造器
        self.name=nm
        self.phone=ph
        print '----------'
        print name,phone
a=AddrBookEntry('aaa','bbb')
print a.phone


在AddrBookEntry 类的定义中,定义了两个方法:

__init__()和 updatePhone()。

__init__() 在实例化时被调用, AddrBookEntry()被调用时。


你可以认为实例化是对__init__()的一种隐式调用,

因为传给  AddrBookEntry()的参数完全与__init__()接收到的参数是一样的(除了 self,
它是自动传递的)。

回忆一下,当方法在实例中被调用时,self(实例对象)参数自动由解释器传递,

所以在上面的__init__()中,需要的参数是nm和ph,


创建实例(实例化):

创建实例(实例化)
>>> john = AddrBookEntry('John Doe', '408-555-1212') #为 John Doe 创建实例
>>> jane = AddrBookEntry('Jane Doe', '650-555-1212') #为 Jane Doe 创建实例

这就是实例化调用,它会自动调用__init__(). self把实例对象自动传入__init__().

你可以在脑子里吧方法中的self用实例名替换掉。

一旦实例被创建后,

 
 创建子类:
 
 靠继承来进行子类话是创建和定制新类类型的一种方式,新的类将保持已存在类所有的特性。
 
 
 而不会改动原来类的定义(指对新类的改动不会影响到原来的类)
 
 对于新的类类型来说,这个新的子类可以定制只属于它的特定功能
 
 
 
 # !/usr/bin/env python
# -*- coding: utf-8 -*-
class AddrBookEntry(object): ##类定义
    # def __init__(self,nm,ph): ##定义构造器
    #     self.name=nm
    #     self.phone=ph
    def updatePhone(self, newph):  # 定义方法
        self.phone = newph +str(100)
        print 'Updated phone# for:', self.phone
class EmplAddrBookEntry(AddrBookEntry):
    def __init__(self):
         pass
a=EmplAddrBookEntry()
print a
print type(a)
print a.updatePhone('llll')


 C:Python27python.exe C:/Users/TLCB/PycharmProjects/untitled/mycompany/eee/a20.py
<__main__.EmplAddrBookEntry object at 0x025F7370>
<class '__main__.EmplAddrBookEntry'>
Updated phone# for: llll100
None

Process finished with exit code 0

现在我们创建了第一个子类,EmplAddrBookEntry。

Python中,当一个类被派生出来,子类继承了基类的属性。

如果需要,每个子类最好定义它自己的构造器,不然,基类的构造器会被调用。

然而,如果子类重写基类的构造器,基类的构造器就不会被自动调用了。

原文地址:https://www.cnblogs.com/hzcya1995/p/13349217.html