类的继承-初级
在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