python修炼第六天
越来越难了....现在啥也不想说了,撸起袖子干。
1 面向对象
先来个例子:
比如人狗大战
需要有狗,人
所以创建两个类别模子
def Person(name,sex,hp,dps):
dic = {"name":name,"sex":sex,"hp":hp,"dps":dps,"bag",[]}
return dic def Dog(name,kind,hp,dps):
dic = {"name":name,"kind":sex,"hp":hp,"dps":dps}
return dic alex = Person("alex","geil")
ha2 = Dog("","",) 造模子 ---面向对象
规范了一个类别 概念:
类 具有相同属性和相同动作的一类事物,组成一个类
对象 具体的某一个具有实际属性 和具体动作的一个实体
类是抽象的,对象是具体的 类的语法:
类:
1 定义:
class 类名:
静态属性 = None
def 动态属性(self):
pass
2 类的第一个功能;查看
# 只要是写在类名中的名字,不管是变量还是函数名,都不能在类的外部直接调用
# 只能通过类名来使用:类名.静态属性
可以修改静态属性
类名.静态属性 = 345
可以增加静态属性
类名.静态属性2 = "abc"
可以删除静态属性
del 类名.静态属性2 动态属性:
定义动态属性时要加个self
def func(self):
print("--->",self)
类名可以查看某个方法,但是一般情况下 我们不直接使用类名来调用方法
而是使用对象来调用方法。 3 类的第二个功能:实例化(创造对象)
class Person:pass
alex = Person()
# 对象 = 类名() 类名加上括号就是实例化,
在实例化的过程中,发生了很多事情是外部看不到的步骤:
1 创建了一个对象
2 自动调用__init__方法
3 这个被创造的对象会被当作一个实际参数传到__init__方法中,并且传给第一个参数self
4 然后执行init方法中的内容
5 自动的吧self作为返回值,返回给实例化的地方 __dict__ # 记录了必要的默认值之外,还记录了程序员在类中定义的所有名字
print(alex.__dict__)
alex.__dict__["name"] = "alex"
alex.__dict__["hp"] = "alex"
alex.__dict__["dps"] = "alex"
可以简写为:
alex.name = "alex"
alex.hp = 250
alex.dps = 5 初始化方法:
上面是在类外面创建对象的属性,能不能在类里面直接生成属性?
这个被创造的对象会被当作一个实际参数传到__init__方法中,并且传给第一个参数self
能不能这样:alex = Person("alex","boy",250,5)
class Person:
def __init__(self,name,hp,dps):
self.name = name
self.hp = hp
self.dps = dps
alex = Person("alex",250,5)
print(alex.__dict__)
print(alex.name) 对象名.方法名 相当于调用类的函数,同时第一个参数是对象名,第二个参数是 当一个类创建一个对象的时候,就产生了一个这个实例和类之间的联系
可以通过实例 对象找到实例化他的类。
但是类无法找到他实例化了多少个对象。
所以:
对象可以访问类的空间
类无法访问对象的空间 命名空间问题: 类命名空间与对象实例的命名空间
alex.country = "印度人"
在访问变量的时候,都先使用自己的命名空间中的变量,如果自己的空间中没有
再到类的空间去找
在使用对象修改静态变量的过程中,相对于在自己的空间中创建了一个新的变量 alex.country[0] = "印度人"
在类的静态变量的操作中,应该使用类名来直接进行操作。就不会出现乌龙问题 思考题
创建一个类,能够计算这个类创建了多少个实例 组合
一个类的对象,作为另外一个类的属性
比如 人有武器
圆环有圆
2 面向对象的三大特性
1 继承 占了2/1
为什么会有继承: 是为了解决代码冗余的问题。
怎么继承?
单继承:
class Parent:
pass
class sun(Parent): 这就代表sun这个类 继承Parent类
pass
产生很多名词:父类,基类,超类 --- parent类
子类 派生类 ----- sun类 多继承,有多个父类:
class Parent1:pass
class Parent2:pass
class sun(Parent1,Parent2):pass 先找对象的内存空间,再找创建这个对象的类的内存空间,如果还没有 再找创建这个类的父类内存空间。
class Animal:
def __init__(self,name,hp,dps)
self.name = name
self.hp = hp
self.dps = dps
def cat()
print("%s吃药回血了",%self.name) class Person(Animal):
def __init__(self,name,hp,dps,sex)
Animal.__init__(self,name,hp,dps) # 或者写为 super().__init__(name,hp.dps) ,但是如果是多继承要写这个。
self.sex = sex # 派生属性
def attack(self):
pass class Dog(Animal):
def __init__(self,name,hp,dps,kind)
Animal.__init__(self,name,hp,dps)
self.kind = kind
def bite():
pass 面试题:
class Foo;
def __init__(self):
self.func()
def func(self):
print("in Foo")
class Son(Foo):
def func(self):
print("in Son")
Son() # 先调用self自己的方法。所以是in Son 多继承:
钻石继承问题:
A 4
/ \
/ \
2 B C 3
\ /
\ /
1 D
优先级:D,B,C,A 小乌龟模型:
A 6
/ \
/ \
3 B C 5
| |
| |
2 D E 4
\ /
\ /
F 1
优先级:F,D,B,E,C,A
遍历算法 : 广度优先算法
python3 都遵循广度优先算法 python3有2种类
1 经典类 Python3已经灭绝了,在python2中还存在,在py2中只要程序员不主动继承object,这个类就是经典类
就遵循深度优先算法。 一条道走到黑。 2 新式类 Python3所有的类都是新式类,所有新式类都继承自object--- 在多继承成中遵循广度优先算法。 super注意:
在单继承中 super就是找父类
在多级继承 super的轨迹 是根据整个模型的起始点而展开的一个广度优先循序,遵循mro规则 抽象类与接口类 主要是针对java的,略 2 多态
在Python当中,处处都是多态。 略 还没讲 3 封装
略 还没讲
python修炼第六天的更多相关文章
- python修炼第一天
Python修炼第一天 新的开始:不会Python的运维,人生是不完整的. 为了我的人生能够完整,所以我来了!今后跟着太白金星师傅学习功夫,记录一下心得,以便日后苦练. 一 Python的历史: Py ...
- python学习 第六天课后总结:
<br class="Apple-interchange-newline"><div></div> python学习 第六天课后总结 ...
- python学习第六天运算符总结大全
python学习第六天运算符总结大全,玖乐网络(www.96net.com.cn)列出下面详细 1,算术运算符 + 加 - 减 *乘 / 除 % 求模 ** 乘方 // 取整除 - 返回商的整数部分 ...
- Python 修炼1
2016年11月21日 Python基础修炼第一篇 1.Python是什么?有什么优缺点呢? python是一个高级编程语言. 优点:开发效率比较高,不但有php写网页的功能,还有写后台的功能 缺点: ...
- Python课程第六天作业
1.以自己的理解总结为什么会出现循环导入,并用代码举例说明 循环导入报错并不是应为相互之间引用而导致报错,实际上是在导入一个模块时发现引用的模块不存在 示例如下: m1.py from m2 impo ...
- Python的第六天
常用模块的学习 一.time & datetime模块 时间相关的操作,时间有三种表示方式: 时间戳 1970年1月1日之后的秒,即:time.time() 格式化 ...
- python学习第六天
一. 模块介绍1. 模块的定义:用一堆代码实现了某个功能的代码集合 包的定义:本质就是一个目录(必须导游一个_init_.py文件),是用来从逻辑上组织模块的.2. 需要多个函数才能完成(函数 ...
- python学习第六天 条件判断和循环
总归来讲,学过C语言的同学,对条件判断和循环并不陌生.这次随笔只是普及一下python的条件判断和循环对应的语法而已. 条件判断: 不多说,直接贴代码: age = 23 if age >= 6 ...
- Python修炼10------面向对象
面向对象-----类 类:类是一种数据结构,就好比一个模型,该模型用来表述一类事物(事物即数据和动作的结合体),用它来生产真实的物体(实例). 对象:什么叫对象:睁开眼,你看到的一切的事物都是一个个的 ...
随机推荐
- Prometheus监控学习笔记之Prometheus的Relabel,SD以及Federation功能
0x00 k8s 的监控设计 k8s 默认以及推荐的监控体系是它自己的一套东西:Heapster + cAdvisor + Influxdb + Grafana,具体可以看 这里 . 包括 k8s 自 ...
- 【读书笔记】使用代理录制Web性能测试脚本
读书笔记:<零成本实现Web性能测试>第3章 基本操作步骤: 在测试计划中添加线程组. 在该线程组中添加HTTP请求默认值.设置服务器名称或ip.端口. 在工作台添加HTTP代理服务器.设 ...
- Java基础学习-流程控制语句
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.也就是说程序的流程对运行结果有直接的影响.所以,我们必须清楚每条语句的执行流程.而且,很多时候我们要通过控制语句的执行顺序来实现我 ...
- javascript函数的上下文
规律1:函数用圆括号调用,函数的上下文是windows对象 所有的全局变量都是windows对象的属性,而函数里面的局部变量,不是windows的属性,不是任何东西的属性,它就是一个变量! 规律2:函 ...
- UVA11996 Jewel Magic
思路 splay维护序列的hash值即可 因为有rev操作,还要维护反串的hash值 代码 #include <cstdio> #include <cstring> #incl ...
- abap 常用 function
ABAP常用函数总结 alv .smartform. excel .text.邮件 .远程访问,FTP服务器... **********常用功能function REUSE_ALV_GRID_DI ...
- acm:屁屁上的巴掌
涉及算法:深度搜索 题目: 题目描述 小新是个调皮的孩子,他总是会把衣服搞脏,他的妈妈美伢非常的生气,于是在<和妈妈的约定条款>加上了第三百七十七条:小新衣服上每有一块污渍妈妈就会打小新的 ...
- Python中常见的正则表达式符号
? 匹配零次或一次前面的分组 * 匹配零次或多次前面的分组 + 匹配一次或多次前面的分组 {n} 匹配n次前面的分组 {n,} 匹配n次或更多次前面的分组 {,m} 匹配零次到m次前面的分组 ...
- vmstat命令参数介绍
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.这个命令是我查看Linux/Unix最 ...
- 如何只安装Postgresql client(以9.4 为例)
Install the repository RPM: yum install https://download.postgresql.org/pub/repos/yum/9.4/redhat/rhe ...