类与对象

学习类的语法 关键字 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. js相关的时间获取方法

    1.获取时间 var time=new Date();//返回的是GMT,格林尼治标准时间. console.log(time)://Thu Jul 27 2017 16:55:21 GMT+0800 ...

  2. vue项目中实现图片懒加载的方法

    对于图片过多的页面,为了加速页面加载速度,所以很多时候我们需要将页面内未出现在可视区域内的图片先不做加载, 等到滚动到可视区域后再去加载.这样子对于页面加载性能上会有很大的提升,也提高了用户体验. 实 ...

  3. 1 .net将xml反序列化

    public static T XmlToObject<T>(string str) where T : class { using (Stream stream = new Memory ...

  4. 我要研究一下minio,管理大量的照片

    随着年龄的增长,电脑里的照片越来越多了,管理和浏览也越来越困难了.

  5. 深入学习Mybatis框架(二)- 进阶

    1.动态SQL 1.1 什么是动态SQL? 动态SQL就是通过传入的参数不一样,可以组成不同结构的SQL语句. 这种可以根据参数的条件而改变SQL结构的SQL语句,我们称为动态SQL语句.使用动态SQ ...

  6. 05-【session、cookie】

    session.cookie 1.HttpSession概述>HttpSession是由JavaWeb提供的,用来会话跟踪的类.session是服务器端对象,保存在服务器端!!!>Http ...

  7. Python爬虫解析htm时lxml的HtmlElement对象获取和设置inner html方法

    Python的lxml是一个相当强悍的解析html.XML的模块,最新版本支持的python版本从2.6到3.6,是写爬虫的必备利器.它基于C语言库libxml2 和 libxslt,进行了Pytho ...

  8. 微信小程序开发(三)点击事件

    接着上篇博客继续. 如下修改: // index.wxml <view>Hello World!</view> <button bindtap="but&quo ...

  9. C++二叉树前中后序遍历(递归&非递归)统一代码格式

    统一下二叉树的代码格式,递归和非递归都统一格式,方便记忆管理. 三种递归格式: 前序遍历: void PreOrder(TreeNode* root, vector<int>&pa ...

  10. springboot中解决servlet乱码问题,使用配置类注册过滤器解决

    8.1 使用传统的Spring提供的字符编码过滤器 在03-springboot-web中的ServletConfig中配置文件类,注册字符编码过滤器 @Bean public FilterRegis ...