首页 > 其他 > 详细

继承part1

时间:2021-04-17 22:36:03      阅读:25      评论:0      收藏:0      [点我收藏+]
‘‘‘
面向对象编程三大特性:继承,多态,封装
‘‘‘

‘‘‘
什么是类的继承:类的继承跟现实生活中的父、子、孙子、重孙子继承关系一样,父类又称为基类;python中类的继承分为:单继承和多继承
‘‘‘

class Dad:
money = 100
def __init__(self, name):
print(‘实例化过程...‘)
self.name = name

def hit_son(self):
print(‘%s正在打儿子‘ % self.name)

class Son(Dad):
pass

print(Son.money)
# Son.hit_son() # 报错,缺少一个参数self

print(Dad.__dict__) # {‘__module__‘: ‘__main__‘, ‘money‘: 100, ‘__init__‘: <function Dad.__init__ at 0x000001E4EFBE8040>, ‘hit_son‘: <function Dad.hit_son at 0x000001E4EFBE8670>, ‘__dict__‘: <attribute ‘__dict__‘ of ‘Dad‘ objects>, ‘__weakref__‘: <attribute ‘__weakref__‘ of ‘Dad‘ objects>, ‘__doc__‘: None}
print(Son.__dict__) # {‘__module__‘: ‘__main__‘, ‘__doc__‘: None}

s1 = Son(‘alex‘) # 类Son实例化时需要传入一个参数name,相当于执行的是父类的__init__(自己本身没有__init__,所以就到父类中去找)
print(s1.__dict__) # {‘name‘: ‘alex‘}
print(s1.name)
print(s1.money)
s1.hit_son()


# 子类继承了父类所有的属性,如果子类定义的属性和父类重名了,并不是覆盖,而是先在自己属性字典里找,有的话就不在父类属性字典找
class Dad_1:
money = 100
def __init__(self, name):
print(‘实例化过程...‘)
self.name = name

def hit_son(self):
print(‘%s正在打儿子‘ % self.name)

class Son_1(Dad):
money = 10000
def __init__(self, name, age):
self.name = name
self.age = age

def hit_son(self):
print(‘来自子类的方法...‘)
print(Son_1.__dict__) # {‘__module__‘: ‘__main__‘, ‘money‘: 10000, ‘__doc__‘: None}
print(Son_1.money) # 10000

s2 = Son_1(‘wupeiqi‘, 20) # 此时子类本身有__init__,所以初始化时按照子类的初始化方法进行传参
print(s2.__dict__) # {‘name‘: ‘wupeiqi‘, ‘age‘: 20}
print(s2.money)
s2.hit_son()

继承part1

原文:https://www.cnblogs.com/xuewei95/p/14672111.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!