课程目标

1. 面向对象编程
2. 类和实例
3. 访问限制
4. 实例属性和类属性

面向对象编程

• 面向对象编程是一种程序设计思想
• 面向对象把类和对象作为程序的基本单元
• 对象包含属性和方法
• 面向过程编程为:函数的调用集合
• 面向对象编程为:对象之间传递信息的集合
• 处处皆对象

类和实例

• 类可以理解为图纸或者模版
• 实例是根据类的图纸或者模版创建出来的一个一个对象
• 类定义class,关键字self
• 类的初始化函数__init__
• 面向对象三大特点:继承,封装,多态
• 属性和方法

访问限制

• 通过”__”两个下划线可以修饰私有变量
• 通过编写get和set方法来修改对象的属性
• Python中没有真正的私有属性和私有方法

实例属性和实例方法

实例属性
class Student(object):
def __init__(self, name):
self.name = name
s = Student('Bob')
s.score = 90
• 类属性
class Student(object):
name = 'Student'
print(Student.name)

class Student(object):
  total = 20 #类属性 公有的
#方法 self指向创建的实例本身 __name 私有属性
def __init__(self,name,score):
self.__name = name
self.__score = score
def print_score(self):
print('%s: %s' % (self.__name,self.__score))
   def get_grade(self):
    if(self.__score >= 90):
      return 'A'
    elif(self.__score >=60):
      return 'B'
    else:
      return 'C'
  def set_score(self,score):
    if 0<=score<=100:
      self.__score=score
    else:
      raise ValueError('分数请大于0小于100')
    self.__score = score
  def get_score(self):
    return self.__score
# 实例化对象
xiaohong = Student('xiaohong',98)
xiaobai = Student('xiaobai',81)
xiaolv = Student('xiaolv',55) # print(xiaohong.name,xiaohong.score)
# print(xiaobai.name,xiaobai.score)
print(xiaolv.set_score(80))
print(xiaolv.get_score())
print(Student.total)
• 括号中object表示继承自哪个类
• 类外面的是函数,类里面的是方法
• self表示类本身
两个相同的实例对象会有两个内存空间,占据的内存空间也可能不同
• python没有真正的私有变量,把私有变量改成名称__Student__name
小结
• 面向过程和面向对象编程
• 类由属性和方法组成
• 对象是类的实例化
• 属性可以封装,并声明私有属性
• 类属性和实例属性

【Day2】3.面向对象编程的更多相关文章

  1. angular2系列教程(六)两种pipe:函数式编程与面向对象编程

    今天,我们要讲的是angualr2的pipe这个知识点. 例子

  2. 带你一分钟理解闭包--js面向对象编程

    上一篇<简单粗暴地理解js原型链--js面向对象编程>没想到能攒到这么多赞,实属意外.分享是个好事情,尤其是分享自己的学习感悟.所以网上关于原型链.闭包.作用域等文章多如牛毛,很多文章写得 ...

  3. PHP 面向对象编程和设计模式 (1/5) - 抽象类、对象接口、instanceof 和契约式编程

    PHP高级程序设计 学习笔记 2014.06.09 什么是面向对象编程 面向对象编程(Object Oriented Programming,OOP)是一种计算机编程架构.OOP 的一条基本原则是计算 ...

  4. Delphi_09_Delphi_Object_Pascal_面向对象编程

    今天这里讨论一下Delphi中的面向对象编程,这里不做过多过细的讨论,主要做提纲挈领的描述,帮助自己抓做重点. 本随笔分为两部分: 一.面向对象编程 二.面向对象编程详细描述 ------------ ...

  5. python基础-面向对象编程

    一.三大编程范式 编程范式即编程的方法论,标识一种编程风格 三大编程范式: 1.面向过程编程 2.函数式编程 3.面向对象编程 二.编程进化论 1.编程最开始就是无组织无结构,从简单控制流中按步写指令 ...

  6. 面向对象编程(OOP)

    什么是面向对象编程,对于面向对象编程与面向过程编程的解释随处可见,个人认为对面向对象编程解释最好的一个定义是:依赖倒转原则是面向对象编程的标志,面向对象编程是一种思想,无论使用哪一种编程语言,如果在编 ...

  7. python 学习笔记7 面向对象编程

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

  8. 进击的Python【第七章】:Python的高级应用(四)面向对象编程进阶

    Python的高级应用(三)面向对象编程进阶 本章学习要点: 面向对象高级语法部分 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 一.面向对象高级语法部分 静态方法 ...

  9. 进击的Python【第六章】:Python的高级应用(三)面向对象编程

    Python的高级应用(三)面向对象编程 本章学习要点: 面向对象编程介绍 面向对象与面向过程编程的区别 为什么要用面向对象编程思想 面向对象的相关概念 一.面向对象编程介绍 面向对象程序设计(英语: ...

随机推荐

  1. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-1.数据信息安全--微信授权一键登录功能介绍

    笔记 1.数据信息安全--微信授权一键登录功能介绍 简介:讲解登录方式优缺点和微信授权一键登录功能介绍         1.手机号或者邮箱注册             优点:              ...

  2. Qt编写数据可视化大屏界面电子看板2-配色方案

    一.前言 做完整个数据可视化大屏界面电子看板系统后,为了提升点逼格,需要提供好几套默认的风格样式以供选择,这样用户可以选择自己喜欢的配色方案来作为整个系统的颜色方案,去看了下市面上大部分的大屏电子看板 ...

  3. Spark算子与RDD基本转换

    map 将一个RDD中的每个数据项,通过map中的函数映射变为一个新的元素. 输入分区与输出分区一对一,即:有多少个输入分区,就有多少个输出分区. flatMap 属于Transformation算子 ...

  4. Servlet获取POST方法请求体数据

    if ("POST".equalsIgnoreCase(request.getMethod())) { test = request.getReader().lines().col ...

  5. Canal——原理架构及应用场景

    Canal简介 Canal是阿里开源的一款基于Mysql数据库binlog的增量订阅和消费组件,通过它可以订阅数据库的binlog日志,然后进行一些数据消费,如数据镜像.数据异构.数据索引.缓存更新等 ...

  6. nginx配置静态资源关闭访问日志

    location ~ .*\.(css|js|gif|png|jpg|jpeg|bmp|swf)$ { root $root_path; access_log off; }

  7. AES 加密算法的原理详解

    AES 加密算法的原理详解 本教程摘选自 https://blog.csdn.net/qq_28205153/article/details/55798628 的原理部分. AES简介 高级加密标准( ...

  8. Mac下启动iOS模拟器

    终端列出你安装的所有可用的设备xcrun instruments -s 或 xcrun simctl list 启动方式一: 先启动模拟器:open -a Simulator,这时会以默认的iOS系统 ...

  9. HBASE概念补充

    HBASE概念补充 HBase的工作方式: hbase中的表在行的方向上分隔为多个HRegion,分散在不同的RegionServer中 这样做的目的是在查询时可以将工作量分布到多个RegionSer ...

  10. python脚本调用外部程序的若干种方式以及利弊

    脚本执行外部程序的常用几种方式: # os.popen(path)# subprocess.run(cmd,shell=True)# subprocess.check_call(cmd,shell = ...