# 面向对象一些基本理解

- 面向对象编程(Object Oriented Programming, OOP),是一种程序设计思想。

  - 主要针对大型软件设计而提出,使软件设计更加灵活。

  - 支持代码复用和设计复用,使代码由更好的可读性和可扩展性。

  - OO: 面向对象
  - OOA:面向对象的分析
  - OOD:面向对象的设计
  - OOI:面向对象的实现
  - OOP:面向对象的编程
  - 面向对象的实现过程:OOA->OOD->OOI

- 类和对象的概念: 
  - 对象:具体的事物,单个个体,类中的一个实例
    - 作为程序的基本单元,一个对象包含了数据和操作数据的函数。
  - 类:抽象名词,代表一个集合,共性的事物
    - 对相同类型的对象进行分类、抽象后,得出共同的特征而形成了类。
- 类跟对象的关系:
  - 一个是抽象,代表的是一大类事物
  - 一个具象,代表一类事物的某一个个体

# 类的定义

- 基本格式:

  class ClassName(object):

    属性...

    方法...
    ......

- 定义一个类:

  - 必须用class关键字
  - 类由属性和方法构成,其他不允许出现
  - 成员属性定义可以直接使用变量赋值,如果没有值,使用None
  - 类的注释,方便理解类的作用,包括属性方法。

- 类的命名规则推荐:

  - 遵守变量命名的规范
  - 大驼峰(有一个或者多个单词构成,每个单词首字母大写,单词跟单词之间相连)
  - 尽量避开跟系统命名相似的命名
- (object)表示类是从哪个类继承下来的,默认是object类.(可省略)

- 类当中基本的内容:

  - 属性:

    - 概念: 一个对象的特征(变量)
    - 分类:
      - 1.实例属性:
        - 一般在构造函数__init__()中定义,定义和使用必须以self作为前缀
        - 实例属性属于实例(对象),只能通过对象名访问。
      - 2.类属性:
        - 是指类中所有方法之外定义的数据成员,可以通过类名访问,也可以通过对象访问
        - 分类:公有属性、保护属性、私有属性

  - 方法:

    - 概念:一个对象的行为,称为方法(函数)
    - 分类:
      - 1.实例方法
        - 公有方法
          - 通过对象名调用
        - 私有方法
          - 不能通过对象名直接调用,
          - 只能在属于对象的方法中通过self调用或者在外部通过其他特殊方式调用
        - 注意:

          - 形参列表第一个参数都要定义且最好命名为self
          - 默认第一个参数代表的是实例化的类对象的引用
          - 需要实列化对象才能使用,使用过程中可能需要截至对象的其他对象的方法完成

        - 调用方法:
          - 标准调用(推荐使用)、类调用、间接调用

      - 2.静态方法

        - 使用staticmethod()内置函数。
        - 默认第一个参数需要接收到一个类
        - 调用:通过类名或对象名
          - 不需要实例化,通过类直接访问,多个实例共享此静态方法
          - 不能直接访问属于对象的成员,只能访问属于类的成员
      - 3.类方法
        - 一般将cls作为类方法的第一个参数名称,调用类方法时不需要为该参数传递值
        - 可以通过类或者它的实例来调用

  - 关于self:

    - 类的所有实例方法都必须至少有一个名为self的参数,并且必须是方法的第一个形参。
    - self 在对象的方法中表示当前对象本身。
    - 如果通过对象调用第一个方法,那么该对象会自动传入到当前方法的第一个参数中
      - self 不是关键字
      - 只是一个普通的参数
    - 理论上可以用任何一个普通变量代替
    - 方法中有self 形参的方法称为非绑定的方法,
      - 可以通过对象访问
      - 没有self的是绑定类方法,只能通过类访问
    - 使用类访问绑定类的方法时,如果类方法总中需要访问当前类的成员,可以通过__class__成员来访问

  * 案例1.创建类

# 1.简单的定义(经典类)
class Person:  # 括号可以省略pass    # pass就是一个占位符,什么也不是
########################################
# 2.创建包含属性的类
class Person:# 1.类属性# 1.1公有属性name = "xiaohei"# 1.2保护的属性_sex = "boy"     # 以一个"_"开头则表示是被保护的属性# 1.3私有属性__age = 3        # 以两下划线"__"开头的则表示是私有属性# 2.实例属性def __init__(self, c):     # self形参不能缺少self.master = "humance"self.aother = cself.other = '添加属性'print(c)
########################################
# 3.创建包含方法的类
class Person:# 类属性name = "xiaobai"  # 类方法# 1.共有方法(实例方法)def eat(self, f):print(self, f)# 2.私有方法def __siyoufangfa(self):print("这是一个私有方法",  self)# 3.类方法
    @classmethoddef leifangfa(cls):print("这是一个类方法",cls)# 4.静态方法
    @staticmethoddef jingtaifangfa():print("这是一个静态方法")

转载于:https://www.cnblogs.com/cmn-note/p/11234340.html

07-Python之面向对象编程(定义)相关推荐

  1. python用类名直接调用方法_一文读全 Python 的面向对象编程方法

    背景介绍: Python 支持三种形式的编程,分别是:"命令式"."函数式"和"面向对象式". 很多优秀的开源 Python 项目里都用到了 ...

  2. python的面向对象编程学生成绩_python的类_面向对象编程

    摘自谬雪峰https://www.liaoxuefeng.com/wiki/1016959663602400/1017496031185408 面向对象编程(定义对象)和面向过程(定义函数)的区别,各 ...

  3. Python设计模式面向对象编程

    前言 本篇文章是基于极客时间王争的<设计模式之美>做的总结和自己的理解.   说到面向对象编程,作为一个合格的Pythoner,可以说信手拈来.毕竟在Python里"万物都是对象 ...

  4. 零基础入门学习Python(35)面向对象编程

    self是什么? Python的self相当于C++的this指针 由同一个类可以生成无数对象,当一个对象的方法被调用的时候,对象会将自身的引用作为第一个参数传给该方法,Python就知道要操作哪个对 ...

  5. Python 进阶 — 面向对象编程

    目录 文章目录 目录 面向对象思想 面向对象编程 面向对象编程的特性 封装 继承 多态 面向对象编程的优势 Python 的类属性与类方法 Python 类的实例化 Python 的对象属性与对象方法 ...

  6. Python基础-面向对象编程

    本文完全转载自廖雪峰大神的教程: 面向对象编程 面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数 ...

  7. python中面向对象编程简称为_Python基础-面向对象编程

    本文完全转载自廖雪峰大神的教程: 面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...

  8. python采用面向对象编程模式吗_如何理解 Python 中的面向对象编程?

    现如今面向对象编程的使用非常广泛,本文我们就来探讨一下Python中的面向对象编程. 作者 | Radek Fabisiak 译者 | 弯月,责编 | 郭芮 以下为译文: Python支持多种类型的编 ...

  9. 2013.01.16 Python的面向对象编程

    看起来貌似我的接收能力貌似很差劲,看了一个多星期才看到Python简明教程的第十三章(面向对象编程).回想一下前面看的内容,大部分都已经忘了,随便写几句代码还得回过头去翻教程,怎么办?是好还是坏?求指 ...

  10. python基础 面向对象编程

    目录 面向对象编程 1.什么是面向对象编程? 面向过程编程思想 面向对象编程思想 2.什么是类?如何定义. 类: 对象 3.如何产生对象? 调用类时的事件: 4.对象属性的查找顺序: 5.类内部的函数 ...

最新文章

  1. 关闭所有cloudfoundry应用进程
  2. 电脑练习打字软件_KeyBlaze Free Typing Tutor(打字练习软件)最新版下载_KeyBlaze Free Typing Tutor(打字练习软件)最新版本下载v4.02官方版...
  3. 【django轻量级框架】Django框架介绍与安装
  4. LeetCode Divide Two Integers(不使用乘、除,求模来计算商)
  5. mysql安装 ---简单实用
  6. volatile 关键字解析
  7. sae 本地环境 mysql数据库_SAE本地环境与真实环境的差别
  8. Linq动态查询与模糊查询
  9. 支付宝当面付接口如何计算优惠
  10. 计算机学科技术前沿:互联网上信息可信性的现状
  11. 数据集怎么导出_PCA算法 | 数据集特征数量太多怎么办?用这个算法对它降维打击...
  12. python自动化办公都能做什么-用 Python 自动化办公,我与大神之间的差距一下就...
  13. 软考 软件设计师考试经验分享、题型分析
  14. C++层次分析法一致性检验
  15. 使用图灵机器人笑话功能提高微信公众帐号活跃度
  16. RabbitMQ登录时guest用户提示User can only log in via localhost
  17. 红米note10和红米note9哪个值得买
  18. Android Studio 快捷键整理
  19. 程序员常用英文单词汇总
  20. 企企通创始人徐辉:连通 跨界 赋能 创新,构建一个企业互联的网状生态

热门文章

  1. Spark之伪分布式搭建、伪分布式Hadoop、Hive安装
  2. 央视再次点赞阿里云ET城市大脑,树立用人工智能治理城市的标杆
  3. NetworkX系列教程(1)-创建graph
  4. Expression Blend 定义RadioButton行为动画
  5. hbase 学习(十四)Facebook针对hbase的优化方案分析
  6. Mysql HA实现MYSQL的高可用(上)
  7. std::remove
  8. windows server 2008 系列讲座三部曲--在线讲座预告
  9. android: 静态XML和动态加载XML混合使用,以及重写Layout控件
  10. Android Studio: Debug Android SDK Source Code