类与对象

学习类的语法 关键字 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. HTML的学习2(代码)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. js 前端请求头里传 token

    参考:https://blog.csdn.net/qq_34309704/article/details/80572077 1.Token:token是客户端频繁向服务器端请求数据,服务器频繁的去数据 ...

  3. SQL*Loader 的使用sqlldr和sqluldr2方法详解

    oracle数据导出工具sqluldr2可以将数据以csv.txt等格式导出,适用于大批量数据的导出,导出速度非常快.导出后可以使用oracle loader工具将数据导入.简介:Sqluldr2:专 ...

  4. Linux监控服务并主动重启

    Linux查询后台进程,如果没有进程号,则重启服务: #!/bin/sh basepath=$(cd ``; pwd) while true do procnum=`ps -ef|grep " ...

  5. linux命令详解——xargs

    1. 简介 之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了xargs命令,例如: find /sbin -perm +700 |ls -l     ...

  6. bisect:维护一个有序的列表

    介绍 bisect模块实现了一个算法来向列表中插入元素,同时仍然保证列表有序 有序插入 import bisect ''' 可以使用bisect.insort向一个列表中插入元素 ''' values ...

  7. python中的__init_subclass__是什么?

    什么是__init_subclass__ class Hook: def __init_subclass__(cls, **kwargs): print("__init_subclass__ ...

  8. ELK对nginx日志进行流量监控

    ELK对nginx日志进行流量监控 一.前言 线上有一套ELK单机版,版本为5.2.1.现在想把nginx访问日志接入到elk里,进行各个域名使用流量带宽的统计分析.要把nginx日志传输到elk上, ...

  9. css文字样式与div

    文字与图片 如果要要将字移动到图片的上方,这里就需要定位一下,设置div为父级,为相对定位:设置h1为绝对定位: div{position:relative;} h1{font-size:16px;c ...

  10. PAT Basic 1056 组合数的和 (15 分)

    给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字.要求所有可能组合出来的 2 位数字的和.例如给定 2.5.8,则可以组合出:25.28.52.58.82.85 ...