Python --类的继承

类的继承-初级

在Python中,使用class关键字进行创建类

class Hello(object):


    def say_hello(self, name):
        return ('hello {}'.format(name))


he = Hello()
print(he.say_hello('Jim'))

其中object是所有类的基类,所有类在创建的时候默认继承object,所以不声明也可以

一般在创建类时会先声明初始化方法,__init__()

class Add:


    def __init__(self, a, b):
        self.a = int(a)
        self.b = int(b)
        
    def add(self):
        return self.a + self.b

count = Add('1', 67)
print(count.add())

当我们调用Add类时,会默认先执行__init()__方法,所以需要给它传参数,而add()方法可以直接把初始化方法__init__()的self.a和self.b两个数进行运算

类的继承-中级

实际运用中,我们可以在一个类B中继承另一个我们创建的类A,此时B类中就会拥有A类中的方法

class A(object):


    def say_hello(self, name):
        return ('hello {}'.format(name))

# he = A()
# print(he.say_hello('Jim'))

class B(A):


    def __init__(self, a, b):
        self.a = int(a)
        self.b = int(b)

    def add(self):
        return self.a + self.b

hi = B(2, 3)
print(hi.say_hello('jim'))

但是若在A类中也有init方法,则根据B类创建的对象不会运行A类中的init方法,因为根据B创建对象时,只会默认传的参数是B类需要的参数

class A(object):


    def __init__(self, name):
        self.name = name

    def say_hello(self):
        return ('hello {}'.format(self.name))


class B(A):


    def __init__(self, a, b):
        self.a = int(a)
        self.b = int(b)

    def add(self):
        # return a + b
        return self.a + self.b

hi = B(2, 3)
print(hi.say_hello() + str(hi.add()))

上面代码运行结果会报错

类的继承-高级

若类C继承类A和类B,则C就会有两个类的方法,但是如果A和B都有相同的方法,那么根据类C创建的对象调用相同的方法时,会优先调用第一个继承的类的方法

class A:


    def __init__(self, name):
        self.name = name

    def add(self):
        return ('hello {}'.format(self.name))
    
class B:


    def __init__(self, a, b):
        self.a = int(a)
        self.b = int(b)

    def add(self):
        # return a + b
        return self.a + self.b

class C(A, B):

    pass

hi = C('jim')
print(hi.add())

此时代码运行的结果为hello jim,且A和B中init方法只会运行A的初始化方法,C类传参数也只能传一个参数

但是若A中没有init方法时,就会依次调用B类中的init方法

class A:


    # def __init__(self, name):
    #     self.name = name

    def add(self, name):
        # return ('hello {}'.format(self.name))
        return ('hello {}'.format(name))

class B:


    def __init__(self, a, b):
        self.a = int(a)
        self.b = int(b)

    def add1(self, m, n):
        return m + n
        # return self.a + self.b

class C(A, B):

    pass

hi = C('22', 21)
print(hi.add('jim') + ' ' + str(hi.add1(3, 2)))

上面代码运行结果hello jim 5

若类C中有init方法,会直接运行,不会再运行A和B中init方法;若C中也有add方法,也就是对继承类中的方法进行重写,会直接调用C的add方法

class A:


    # def __init__(self, name):
    #     self.name = name

    def add(self, name):
        # return ('hello {}'.format(self.name))
        return ('hello {}'.format(name))

class B:


    def __init__(self, a, b):
        self.a = int(a)
        self.b = int(b)

    def add(self, m, n):
        return m + n
        # return self.a + self.b

class C(A, B):


    def __init__(self, m, n):
        self.m = int(m)
        self.n = int(n)

    def add(self):
        return self.m + self.n

hi = C('22', 21)
# print(hi.add('jim') + ' ' + str(hi.add1(3, 2)))
print(hi.add())

上述代码运行结果为:43

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值