• Python 之类与对象及继承


    类与对象

    学习类的语法 关键字 class 类别,分类
    class 类名:
    属性
    特性特征
    类名的编写规范:首字母大写 驼峰命令 见名知意--->遵守规范。
    Math StudentInfo
    class SuperMan: # 实例 类名()
    # 属性-->本质:变量
    height = 180
    name = '咸蛋超人'
    age = 18

    共性/特性--->动作特征
    本质:函数--->属于谁?类?--->类函数 or 类方法
    self c语言 java 指针?
    他与普通函数的唯一区别就是:函数括号内一定有self关键字
    并且是self开头 self看起来啥事都不做
    def move_skill(self):
    print('具有瞬间移动的功能')

    def fly_skill(self):
    print('可以翻筋斗云')

    def power_skill(self):
    print('可以隔山打牛')

    def wealth_skill(self):
    print('我是招行的最大金主')


    对象 or 实例 类里面的一个具体的个例
    创建一个实例 或者创建一个对象 类名() 语法语法语法语法!
    person_1 = SuperMan() # new 一个对象?
    只有这个类的实例 才有权限 可以调用类里面的属性 函数
    类里面:属性 函数
    person_1.power_skill()
    # 继承父类 子类
    class SoftTestEngineer: # 父类
    def basic_skill(self):
    print("会做手动点点点测试")
    def salary(self):
    print("我的薪资是6k")

    class SuperMan:
    height = 180
    name = '咸蛋超人'
    age = 18

    def move_skill(self, mill):
    print(self.name + ':具有瞬间移动的技能,能够瞬间移动%s' % mill)

    def fly_skill(self, tool, long=2000):
    print('可以翻筋斗云,工具就是%s,可以翻%s米' % (tool, long)) # 格式化

    def power_skill(self, a, b, c):
    self.move_skill(c) # 调用函数?
    self.fly_skill(a, b) # 调用函数?
    print('可以隔山打牛')

    def wealth_skill(self, **kwargs):
    return kwargs


    person_1 = SuperMan() # new 一个对象?
    person_1.power_skill('定海神针', '2', '1000')
    # person_1.move_skill()
    # person_1.fly_skill(1000)
    person_1.fly_skill('筋斗云')
    # person_1.wealth_skill('招行','央行','工行','建行','平安')
    result = person_1.wealth_skill(bank='招行', money=100000000)
    print("返回的结果值", result)

    类函数拓展学习 函数可以的 类函数也可以 类函数有self
    1:类函数可以调用类的属性值吗?
    可以调用 但是请加关键字self
    2:类函数可以有位置参数吗?
    可以
    3:类函数可以有默认参数吗?
    可以
    4:类函数 中的位置参数与默认参数可以同时存在吗?
    可以 而且还有顺序的规定 位置参数要在默认参数之前?
    5:类函数可以有动态参数吗? 关键字参数吗?
    可以
    6:类函数可以调用同一个类里面的其他函数吗?
    可以 但是要加self关键字?
    7:return关键字 可以返回结果值?
    可以
    8:类函数可以加try...except?
    可以!!!
    初始化函数 def __init__() 出厂设置 一般存储属性值
    什么时候用?
    1:为所欲与 你的类你做主
    2:如果这个属性是多个函数或者多处地方要用?
    3:如果规定了 这个实例一旦创建必须具有哪些属性
    class SuperMan:
    def __init__(self, height, name, age=20): # 位置参数
    self.height = height
    self.name = name
    self.age = age

    def move_skill(self, mill):
    print(self.name + ':具有瞬间移动的技能,能够瞬间移动%s' % mill)

    def fly_skill(self, tool, long=2000):
    print(self.name + '可以翻筋斗云,工具就是%s,可以翻%s米' % (tool, long)) # 格式化

    def power_skill(self, a, b, c):
    self.move_skill(c) # 调用函数?
    self.fly_skill(a, b) # 调用函数?
    print(self.name + '可以隔山打牛')

    def wealth_skill(self, **kwargs):
    return kwargs

    如果你的类里面有初始化函数
    创建实例的
    person_2 = SuperMan('200', '腰子')
    初始化函数作用?
    1:创建实例的时候 必须要带参数
    person_2.move_skill(100)

    # 最简单的继承 类名后面的括号里面 放父类的名字
    # 子类可以调用父类的任何属性 任何方法
    # 重写 & 拓展
    # class JuniorSoftTestEngineer(SoftTestEngineer): # 子类
    # pass

    class JuniorSoftTestEngineer(SoftTestEngineer): # 子类
    # def salary(self): # 重写 跟父类的方法名 函数名同名
    # print("我的薪资是10k")
    def salary(self, salary):
    print("薪资是%s"%salary)
    def sql_skill(self): # 拓展 写父类没有的,子类特有的
    print("数据库用的666")
    def auto_test_skill(self):
    print("会自动化测试")


    if __name__ == '__main__':
    SoftTestEngineer().basic_skill()
    JuniorSoftTestEngineer().basic_skill()
    SoftTestEngineer().salary()
    JuniorSoftTestEngineer().salary(20000)
    JuniorSoftTestEngineer().auto_test_skill()

    多继承 了解即可
    class A:
    def add(self, a, b):
    print("A里面的加法", a+b )
    class B:
    def add(self, a, b):
    print("B里面的加法", a+b )
    def sub(self, a, b):
    print("B里面的减法", a-b )

    class C(B, A): # 多继承 位置优先的关系 生效的时候:有同名函数的时候
    pass

    if __name__ == '__main__':
    C().add(2, 8)
    C().sub(9, 3)

    超继承 比较贪婪的继承方法:
    class SoftTestEngineer: # 父类
    def basic_skill(self):
    print("会做手动点点点测试")
    def salary(self):
    print("我的薪资是6k")

    class JuniorSoftTestEngineer(SoftTestEngineer): # 子类
    def basic_skill(self): # 重写 特殊重写 超继承 super 关键字
    # SoftTestEngineer().basic_skill()
    super(JuniorSoftTestEngineer, self).basic_skill()
    print("我可以写测试用例,写测试报告")

    def basic_skill_2(self):
    self.basic_skill() # 调用父类函数里面的

    if __name__ == '__main__':
    JuniorSoftTestEngineer().basic_skill()

    class A:
    def __init__(self, a, b):
    self.a = a
    self.b = b
    def add(self):
    print("A里面的加法", self.a+self.b )

    def chengfa(self):
    print("A里面的加法", self.a * self.b )

    class C(A):
    pass

    if __name__ == '__main__':
    C(4, 6).add()
    实例的创建 无初始化函数 类名()
    无初始化函数 类名(对应的参数)

  • 相关阅读:
    Java中的多线程你只要看这一篇就够了
    模板CodeTemplate
    mybatis_mysql
    Kettle 使用Json输入
    图解ByteBuffer
    双队列缓存
    log4j.properties配置详解与实例
    Kettle 使用Json输入
    JSON响应端模拟测试
    使用Kettle导出excel
  • 原文地址:https://www.cnblogs.com/coxiseed/p/9297119.html
Copyright © 2020-2023  润新知