码迷,mamicode.com
首页 > 编程语言 > 详细

Python说文解字_继承过程中的参数集合

时间:2019-06-01 09:43:42      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:字符串   war   rgs   不同   ddr   name   code   有一个   很多   

1. 先看一段属性继承的代码:

class User:
    def __init__(self,name,age):
        self.name = name
        self.age = age

class User1(User):
    def __init__(self,name,age,height,weight):
        self.height = height
        self.weight = weight
        # 此处像继承父类的name 和 age
        super().__init__(name, age)



user1 = User1(thomas,38,180,80)

print(user1.height)
print(user1.weight)
print(user1.name)
print(user1.age)

# 180
# 80
# thomas
# 38

  说明1:当然这么写一点儿毛病都没有,但是有一个问题是,我们在子类继承的时候还需要在写明父类当中的具有的属性name和age嘛?这样写有点儿麻烦。

  说明2:我们如果有N个父类的参数,每次要继承父类参数的时候不带累死了,如果父类参数当中还有字典,字符串等等。如何处理?

  说明3:其实这里我们就用到了*args,**kwargs可变长参数的妙用了。我们定义父类有N个不同类型的参数,再来看一下,可以如何简单的应用。

 

  更改代码2

class User:
    def __init__(self,name,age,address = Qingdao,dicts = {key:value}):
        self.name = name
        self.age = age
        self.address = address
        self.dicts = dicts


class User1(User):
    def __init__(self,height,weight,*args,**kwargs):
        super().__init__(*args,**kwargs)
        self.height = height
        self.weight = weight

user1 = User1(180,80,thomas,38)

print(user1.height)
print(user1.weight)
print(user1.name)
print(user1.age)
print(user1.address)
print(user1.dicts)

# 180
# 80
# thomas
# 38
# Qingdao
# {key: value}

  说明1:很牛X吧?其实我们不用具体的说明父类有哪些属性参数值,用不定长参数就搞定了,这样简写了很多代码量:记住:super().__init__(*args,**kwargs)

  说明2:但是注意一点。*args和**kwargs要写到最后。而且在子类的构造函数上也要写上这两个东西。

 

 

Python说文解字_继承过程中的参数集合

标签:字符串   war   rgs   不同   ddr   name   code   有一个   很多   

原文地址:https://www.cnblogs.com/noah0532/p/10958291.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!