类与对象

学习类的语法 关键字 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()
实例的创建 无初始化函数 类名()
无初始化函数 类名(对应的参数)

Python 之类与对象及继承的更多相关文章

  1. python中类与对象之继承

    面对对象的三大特性之继承 1.什么是继承? 在程序中,继承指的是class与class之间的关系 继承是一种关系,必须存在两个class才能产生这种关系:被继承的class称为父类,继承的class称 ...

  2. python day18--面向对象,继承

    # class Animal: # breath = '呼吸' # # def __init__(self, name, sex, age): # self.name = name # self.se ...

  3. 一文讲全了Python 类和对象内容

    摘要:这是一个关于 Python 类和对象的全部内容. 本文分享自华为云社区<从零开始学python | Python 类和对象-面向对象编程>,原文作者:Yuchuan  . Pytho ...

  4. python基础——获取对象信息

    python基础——获取对象信息 当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type( ...

  5. Python深入03 对象的属性

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python一切皆对象(object),每个对象都可能有多个属性(attribut ...

  6. #JavaScript对象与继承

    JavaScript对象与继承 JavaScript是我在C语言之后接触的第二门编程语言,大一暑假的时候在图书馆找了一本中国人写的JavaScript程序设计来看.那个时候在编程方面几乎还是小白,再加 ...

  7. python 类和对象

    类和对象 类 1.类的组成    数据和函数,二者是类的属性 2.两个作用: 实例化 属性引用  属性引用:类名.属性(增删改查)   实例化: 类名加括号就是实例化,会自动出发__init__的运行 ...

  8. python学习日记(面向对象——继承)

    什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 class Par ...

  9. Python类与对象的理解

    注意python的类对象与实例对象的区分 类对象与实例对象是相对的,例如:a=1,那么a就是int的一个实例对象,这里的a相对于int来说,a是实例对象,int是类对象.但是int同时又是type的实 ...

随机推荐

  1. 微信小程序返回箭头跳转到指定页面

    onUnload: function () { wx.reLaunch({ url: '../me/order-detail', }) },//这里url搞相对路径 wx.reLaunch跳到新页面没 ...

  2. vscode 头部注释插件

    1.安装 在vs商店搜索koroFileHeader 2.进入vscode的设置里边搜索fileheader.customMade 3.修改配置信息 "fileheader.customMa ...

  3. Linux中 tr 命令详解

    tr - translate or delete characters 主要用于转换和删除字符 带有最常用选项的t r命令格式为:tr -c -d -s [ "string1_to_tran ...

  4. java(堆、栈、常量池)

    参考链接: https://www.cnblogs.com/wanson/articles/10819189.html

  5. fastadmin中关联表时A为主表,想让B表和C表关联时怎么办?

    $sql = Db::connect('数据库')->table('C表')->where('status', 'normal')->field('字段 别称[不可与其他表重复]') ...

  6. Java 访问 C++ 方法:JavaCPP

    JavaCPP提供了在Java中高效访问本地C++的方法.采用JNI技术实现,支持所有Java实现包括Android系统,Avian 和 RoboVM. JavaCPP提供了一系列的Annotatio ...

  7. mybatis-04【小结】

    mybatis-04[小结] 1.Mybatis 中 # 和 $ 的区别?#相当于对数据 加上 双引号,$相当于直接显示数据1)#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号. 如:o ...

  8. kubernetes管理机密信息

    一.启动应用安全信息的保护: Secret介绍: 应用启动过程中可能需要一些敏感信息,比如访问数据库的用户名密码或者秘钥.将这些信息直接保存在容器镜像中显然不妥,Kubernetes 提供的解决方案是 ...

  9. Codeforces Round #454 D. Power Tower (广义欧拉降幂)

    D. Power Tower time limit per test 4.5 seconds memory limit per test 256 megabytes input standard in ...

  10. P2634 树上路径长度为3的倍数的点对数 点分治

    在计算答案的时候维护一个数组num num[i]为当前所有点距离根距离%3的数量 则当前块的答案为num[0]*num[0]+2*num[1]*num[2] #include<bits/stdc ...