面向对象基础知识

1.什么是面向对象编程?

- 以前使用函数

- 类 + 对象

2.什么是类什么是对象,又有什么关系?

class 类:
  def 函数1():
    pass
  def 函数2():
    pass # obj是对象,实例化的过程
obj = 类()
obj.函数1()

========== 面向对象不好 ============

========== 函数编程好 ==============

- 有时候,函数编程能实现?比较麻烦。

- 面向对象非常的简单就能实现。

3.什么时候适用面向对象?

- 1.当多个函数有公共的参数的时候

- 2.根据一个模板创建某些东西

- 3.链接服务器,执行命令,关闭

注:面向对象,可以进行更多的修改需求修改。

4.self就是调用当前方法的对象。

- 函数(方法)保存在类里面。

- 字段保存在对象内存下。

5.静态字段的使用场景。

- 创建的每一个字段都有共同的值,就可以设置为静态字段。

成员属性

class Foo:

  def __init__(self,name):

    #普通字段,属性

    self.NAME = name

    self.Country = "中国"

全局属性

class Foo:

  #静态字段,公有属性

  Country = "中国"

  def __init__(self,name):

    self.NAME = name

6.面向对象三大特性,继承,封装,多态。

封装:

- 类中封装:字段,方法

- 对象中封装了:普通字段的值

例子

class F1:

  def __init__(self,n):

    self.N = n

    print('F1')

class F2:

  def __init__(self,arg1):

    self.a = arg1

    print('F2')

class F3:

  def __init__(self,arg2):

    self.b = arg2

    print('F3')

o1 = F1('alex')

o2 = F2(o1)

o3 = F3(o2)

########### 输出Alex:o3.b.a.N###########

#o1 = F1('alex')

#o2 = F2(o1)

#o3 = F3(o2)

#print(o3.b.a.N)

#执行结果

#alex

#注: o3包含o2包含o1包含N赋值alex。

继承:

例子:

求出结果:对应继承。

class F1:

   def __init__(self):

      print('F1')

    def a1(self):

        print('F1a1')

    def a2(self):

        print('F1a2')

class F2(F1):

    def __init__(self):

        print('F2')

    def a1(self):

        print('F2a1')

    def a2(self):

        self.a2()

        print('F2a2')

class F3(F2):

    def __init__(self):

        print('F3')

# def a1(self):

# print('F3a1')

def a2(self):

    print('F3a1')

obj = F3()

obj.a1()                        

多态:

- python:默认支持多态,没有类型限制

- 多态:多种形态。

7.字段与方法

字段:

普通字段(保存在对象中)

静态字段(保存在类中)

方法:

普通方法(保存在类中,调用者对象,至少有一个self参数)

class F1:

    ...

    def a1(self):

        print(self.name)

obj = F1()

obj.a1 = a1()

# 注:obj 对象内存没有存入数据,会占用内存。    

静态方法(保存在类中,调用者类,无需创建对象,可以有任意个参数):

class F1:

    @staticmethod

    def a1():

        print(self.name)

F1.a1()

# 注:相当于函数 @staticmethod。

8.知识总结

  属性

    1.实例变量 (实例内存)

    2.类变量(类内存)

    3.私有属性_var

  方法

    1.构造方法

    2.析构函数

    3.私有方法

对象

  实例化一个类后得到的对象

封装

  把一些功能的实现细节不对外暴露

继承

  做用:代码的重用

  1.继承组合

      class Foo(object):

        def __init__(self,name,age,sex,类元素)#析构函数

          super(Teacher,self).__init_(name,age,sex)#继承

          self.person = Person(self,job) #组合,关联两个基类

          #相当于实例化了一个类

          self.类名 = 类元素 #以组合的形式实现代码的重用。

  2.单继承

  3.多继承      

      2.7经典类,深度优化,新式类,广度优先

      3.x均是广度优先
      class Foo(object): #都写新式类

        def __init__(self,name,age,sex,salary)#析构函数

          #新式类写法,推荐

          super(Teacher,self).__init_(name,age,sex) #继承父类,先重构侯后继承。

          #经典类写法,单个继承父类,不推荐

          SchoolMember.__init__(self,name,age,sex) #继承父类

多态

接口重用,一种接口多种实现

一种接口,可以自动匹配多个实例

Python 面向对象基础知识的更多相关文章

  1. Python面向对象基础知识

    面向对象是一种编程方式,此编程方式的实现是基于对类和对象的使用 类是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实例用于调用 ...

  2. Python数据挖掘——基础知识

    Python数据挖掘——基础知识 数据挖掘又称从数据中 挖掘知识.知识提取.数据/模式分析 即为:从数据中发现知识的过程 1.数据清理 (消除噪声,删除不一致数据) 2.数据集成 (多种数据源 组合在 ...

  3. Python:基础知识

    python是一种解释型.面向对象的.带有动态语义的高级程序语言. 一.下载安装 官网下载地址:https://www.python.org/downloads 下载后执行安装文件,按照默认安装顺序安 ...

  4. Python 面向对象 基础

    编程范式概述:面向过程 和 面向对象 以及函数式编程 面向过程:(Procedure Oriented)是一种以事件为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现 ...

  5. python面向对象基础

    面向对象基础 1. 简述 编程方式: 面向过程: 根据代码在脚本的堆叠顺序,从上到下依次执行 函数式编程:将相同功能的代码封装到函数中,直接调用即可,减少代码重复性 面向对象:对函数进行分类和封装,将 ...

  6. python——面向对象基础

    概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 面向过程编程最易被初学 ...

  7. python 爬虫基础知识一

    网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本. 网络爬虫必备知识点 1. Python基础知识2. P ...

  8. PHP中oop面向对象基础知识(一)

                                                                                        OOP 基础知识汇总(一) &g ...

  9. Python学习-基础知识-2

    目录 Python基础知识2 一.二进制 二.文字编码-基础 为什么要有文字编码? 有哪些编码格式? 如何解决不同国家不兼容的编码格式? unicode编码格式的缺点 如何既能全球通用还可以规避uni ...

随机推荐

  1. vue-chat项目之重构与体验优化

    前言 vue-chat 也就是我的几个月之前写的一个基于vue的实时聊天项目,到目前为止已经快满400star了,注册量也已经超过了1700+,消息量达2000+,由于一直在实习,没有时间对它频繁地更 ...

  2. MySQL innodb引擎下根据.frm和.ibd文件恢复表结构和数据

    记录通过.frm和.ibd文件恢复数据到本地 .frm文件:保存了每个表的元数据,包括表结构的定义等: .ibd文件:InnoDB引擎开启了独立表空间(my.ini中配置innodb_file_per ...

  3. B树、B+树、B*树

    二叉搜索树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树: 如 ...

  4. NOIP初赛 之 哈夫曼树

    哈夫曼树 种根据我已刷的初赛题中基本每套的倒数第五或第六个不定项选择题就有一个关于哈夫曼树及其各种应用的题,占:0-1.5分:然而我针对这个类型的题也多次不会做,so,今晚好好研究下哈夫曼树: 概念: ...

  5. Echarts数据可视化legend图例,开发全解+完美注释

    全栈工程师开发手册 (作者:栾鹏) Echarts数据可视化开发代码注释全解 Echarts数据可视化开发参数配置全解 6大公共组件详解(点击进入): title详解. tooltip详解.toolb ...

  6. git镜像仓库

    有时候我们会把一些仓库放到本地,当他更新的时候,可以使用简单命名更新他. 不是所有时间我们都有网,所以把远程的仓库作为镜像,可以方便我们查看 普通的git clone不能下载所有分支,想要简单的git ...

  7. win10 uwp 读写XML

    UWP 对 读写 XML做了一些修改,但和之前 WPF 的方法没有大的区别. 我们先来说下什么是 XML , XML 其实是 树结构,可以表达复杂的结构,所以在定制要求高的.或其他方面如json 做不 ...

  8. Anroid四大组件service之本地服务

    服务是Android四大组件之一,与Activity一样,代表可执行程序.但Service不像Activity有可操作的用户界面,它是一直在后台运行.用通俗易懂点的话来说: 如果某个应用要在运行时向用 ...

  9. ThreadPoolExecutor系列<三、ThreadPoolExecutor 源码解析>

    本文系作者原创,转载请注明出处:http://www.cnblogs.com/further-further-further/p/7681826.html 在源码解析前,需要先理清线程池控制的运行状态 ...

  10. 栈(存储结构链表)--Java实现

    /*用链表实现栈--链栈 * */ public class MyLinkedStack { public MyLinkedList linklist; int items; public MyLin ...