类与对象

学习类的语法 关键字 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. Guava动态调用方法

    前言 大家在Coding的时候,经常会遇到这样一个情况,根据不同的条件去执行对应的代码.我们通常的处理方式是利用if-else判断,或者直接switch-case,特别是jdk1.6之后,swith开 ...

  2. mac 下安装mysql

    1.安装mysql 使用 brew 进行安装: brew install mysql 2.安装完成: 3.如果开机启动服务 执行:brew services start mysql 否则:mysql. ...

  3. eclipse 导入外面的jar

    Eclipse中导入外部jar包 听语音 | 浏览:52620 | 更新:2014-12-07 20:59 | 标签:eclipse 1 2 3 4 5 6 7 分步阅读 在编写java代码时,为方便 ...

  4. 使用脚本启动fabric时出错

    Error: got unexpected status: BAD_REQUEST -- error authorizing update: error validating ReadSet: rea ...

  5. Windows环境中编译opencv3.0同时加入OPENCV_contrib库及解决遇到相关问题[contrib 必须要3.1以上的opencv才支持了]

    更新:现在contrib库必须要opencv3.1以上才能支持编译通过了. 方法和步骤还是和本篇文章一样. ############################################## ...

  6. 【Day1】4.基础语法及分支结构

     视频地址(全部) https://edu.csdn.net/course/detail/26057 课件地址(全部) https://download.csdn.net/download/gentl ...

  7. linux之网络命令

    本文整理了在实践过程中使用的Linux网络工具,这些工具提供的功能非常强大,我们平时使用的只是冰山一角,比如lsof.ip.tcpdump.iptables等. 本文不会深入研究这些命令的强大用法,因 ...

  8. java合并数组的几种方法,stream流合并数组

    一.实例代码 package cc.ash; import org.apache.commons.lang3.ArrayUtils; import java.lang.reflect.Array; i ...

  9. 第七章 路由 71 路由-router-link的使用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  10. pip install --upgrade pip

    pip install --upgrade pip python库中urllib3 (1.24.3) or chardet (2.2.1) 的版本不兼容 解决如下: # pip uninstall u ...