A、python面向对象
1.面向对象基础:面向对象三个特性:封装,继承,多态
C# java 只能用面向对象编程
Ruby,python 函数+面向对象
函数式编程:def 函数
def f1(a):
return "f1"
def f2(b):
return "f2" f1("www")
f2("aaa") 面向对象式编程,类,def 方法
class Func:
def f1(self,a):
return "f1"
def f2(self,b):
return "f2" obj=Func()
obj.f1("www")
obj. f2("aaa")
'''

'''
2.self:形式参数,代指执行方法中的对象,python内部传递
类+括号:自动执行类中的__init__方法,初始化
在__init__方法中执行具体的封装方法
__init__有个特殊的名字:构造方法 3.封装:
使用场景一:当同一类型的方法具有相同的参数时,直接封装到对象中即可
使用场景一:把类当做模板,创建多个对象(对象内封装的数据可以不一样)
class Func:

    def __init__(self,bk):
'''
该方法叫做构造方法
:param bk:
'''
#普通字段
self.b=bk def f1(self,a):
print("f1",self.b) def f2(self,c):
print("f2", self.b) def f3(self,d):
print("f2", self) def __del__(self):
'''
解释器销毁对象时自动调用
特殊的名字:析构方法
:return:
'''
pass
#创建对象实例,并将数据封装到对象中
obj1=Func('www.baidu.com')
#封装
#obj1.b="www.baidu.com"
#执行方法,执行过程中可以根据self去obj中去取已经封装在里面的数据
obj1.f1("www") obj2=Func("www.jd.com")
#obj2.b="www.jd.com"
obj2.f2("www")
'''
4.继承:父类(基类)子类(派生类)
  1.派生类可以继承基类中所有的功能
  2.派生类和基类同时存在,优先派生类
  3.python类中可以同时继承多个类(java等不可以)
  4.多继承 优先:自己,先左边后右边
  5.多继承见图


class Anical:
def __init__(self,name):
pass def Eat(self):
print(self.name+"吃0") def Cry(self):
print(self.name+"叫0")
def f1(self):
print("0") class Uncle: def __init__(self,name):
self.name=name def du(self):
print("赌")
def f1(self):
print("0.0") class Pig(Anical,Uncle): def __init__(self,name):
self.name=name
def Cry1(self):
print(self.name+"叫1")
# def f1(self):
# print("1")
class Dog(Anical): def __init__(self,name):
self.name=name
def Cry2(self):
print(self.name+"叫2") obj1=Pig('小白')
obj1.du()
obj1.Cry1()
obj1.Cry()
obj1.Eat()
print(obj1.name) obj1.f1()
obj2=Anical('小黑')
obj2.f1()
多继承例子:深度优先
class A:
def f(self):
self.f1() class B(A):
def f1(self):
print("B") class C:
def f1(self):
print("C") class D(C,B):
def f2(self):
print("D") d=D()
d.f()
---------------------------------------
C
多继承:广度优先

class Person:

    def f(self):
print("Person")
class A(Person):
def f1(self):
print("A") class B(Person):
def f1(self):
print("B") class C(A):
def f2(self):
print("C") class D(B):
def f(self):
print("D")
class E(C,D):
def f2(self):
print("E") d=E()
d.f()
-----------------------------------
D
5、多态:每个参数都可以传多种参数
多种形态
pyhton本身支持多态
扩展:
重载:函数名相同,参数不同(python不支持)
重写:派生类中重新实现基类的方法 6、super执行父类中的构造方法
class Animal:
def __init__(self):
print("A的构造方法")
self.ty="动物" class Cat(Animal):
def __init__(self):
print("Cat的构造方法")
self.n="猫"
super(Cat,self).__init__() #执行父类的构造方法
#Animal.__init__(self) #执行父类的构造方法 c=Cat()
print(c.__dict__)
----------------------------------------------------------------

  Cat的构造方法
  A的构造方法
  {'n': '猫', 'ty': '动物'}



三十九、python面向对象一的更多相关文章

  1. python第三十九课——面向对象(二)之初始化属性

    设计Car类,初始化属性speed,提供一个run函数 import time class Car: def __init__(self,speed): self.speed=speed #将Road ...

  2. python第三十九课——面向对象(二)之设计类

    1.设计类class 车: #属性 颜色 = red 品牌 = "BMW" 车牌 = "沪A88888" #函数 行驶(): 停止(): 2.实例化车对象 ca ...

  3. 三十九 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本概念

    elasticsearch的基本概念 1.集群:一个或者多个节点组织在一起 2.节点:一个节点是集群中的一个服务器,由一个名字来标识,默认是一个随机的漫微角色的名字 3.分片:将索引(相当于数据库)划 ...

  4. 第三百三十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—Scrapy启动文件的配置—xpath表达式

    第三百三十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—Scrapy启动文件的配置—xpath表达式 我们自定义一个main.py来作为启动文件 main.py #!/usr/bin/en ...

  5. NeHe OpenGL教程 第三十九课:物理模拟

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  6. Java进阶(三十九)Java集合类的排序,查找,替换操作

    Java进阶(三十九)Java集合类的排序,查找,替换操作 前言 在Java方向校招过程中,经常会遇到将输入转换为数组的情况,而我们通常使用ArrayList来表示动态数组.获取到ArrayList对 ...

  7. Gradle 1.12用户指南翻译——第三十九章. IDEA 插件

    本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  8. SQL注入之Sqli-labs系列第三十八关、第三十九关,第四十关(堆叠注入)

    0x1 堆叠注入讲解 (1)前言 国内有的称为堆查询注入,也有称之为堆叠注入.个人认为称之为堆叠注入更为准确.堆叠注入为攻击者提供了很多的攻击手段,通过添加一个新 的查询或者终止查询,可以达到修改数据 ...

  9. 十九. Python基础(19)--异常

    十九. Python基础(19)--异常 1 ● 捕获异常 if VS异常处理: if是预防异常出现, 异常处理是处理异常出现 异常处理一般格式: try:     <............. ...

  10. centos shell编程5 LANMP一键安装脚本 lamp sed lnmp 变量和字符串比较不能用-eq cat > /usr/local/apache2/htdocs/index.php <<EOF重定向 shell的变量和函数命名不能有横杠 平台可以用arch命令,获取是i686还是x86_64 curl 下载 第三十九节课

    centos shell编程5  LANMP一键安装脚本 lamp  sed  lnmp  变量和字符串比较不能用-eq  cat > /usr/local/apache2/htdocs/ind ...

随机推荐

  1. 什么是RESTful API、WSGI、pecan

    RESTful API REST的全称是Representational State Transfer(表征状态转移), 是Roy Fielding在他的博士论文Architectural Style ...

  2. GUID在安全中作用及生成方法

    参考改进于http://blog.csdn.net/jcicheng/article/details/743934 全球唯一标识符 (GUID) 是一个字母数字标识符,用于指示产品的唯一性安装.在许多 ...

  3. lnmp 环境搭建后,pathinfo 模式支持的配制。

    ThinkPHP的四种URL模式:0(普通模式);1(PATHINFO模式);2(REWRITE模式);3(兼容模式) nginx需要PATHINFO模式,但需要更改nginx配置文件让其支持PATH ...

  4. Python修炼之路-装饰器、生成器、迭代器

    装饰器 本质:是函数,用来装饰其他函数,也就是为其他函数添加附加功能. 使用情景 1.不能修改被装饰的函数的源代码:        2.不能修改被装饰的函数的调用方式. 在这两种条件下,为函数添加附加 ...

  5. 推荐几个天气Api接口 (可在小程序中使用)

    国内的地图软件基本是支持查询天气的唯独腾讯地图不支持天气查询,当然其他天气平台提供的接口也是够个人使用的 1.高德地图(高德地图开发者平台)支持获取实时天气数据 2.百度地图(百度地图开放平台)支持获 ...

  6. MySQL不常用、易忽略的小知识

    笔者从事开发也有一段时间了,关于数据库方面的一些小知识在这里总结一下 1.count(*),count(1)与count(column)区别 count(*)对行的数目进行计算,包含NULL coun ...

  7. C++中的字符数组、字符指、字符串针(腾讯)

    一.字符数组 1.定义时进行初始化的方式 (1)char c[12]={'I',' ','a','m',' ','h','a','p','p','y'};//最后两个元素自动补‘\0’(不是空格),其 ...

  8. 获取树莓派ip地址的方法

    1.有显示器​ (1)鼠标停留在屏幕右上角网络图标上,2-3秒会显示网络连接信息​(2) 图形界面下打开终端运行ifconfig命令 2.登录路由器​查看名叫raspberry的设备 3.电脑上运行命 ...

  9. electron 点击事件无效

    用CSS的 -webkit-app-region: drag;设置窗口可以移动后,点击事件无效 解决办法暂时不知道, 给点击的按钮加 -webkit-app-region: no-drag; 就可以点 ...

  10. JPA学习(三、JPA_API)

    框架学习之JPA(三) JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中 ...