课程目标

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
小结
• 面向过程和面向对象编程
• 类由属性和方法组成
• 对象是类的实例化
• 属性可以封装,并声明私有属性
• 类属性和实例属性

最新文章

  1. PHP跨域form提交
  2. ConcurrentHashMap内存泄漏问题
  3. jquery ajax(实现单独提交某个form)
  4. 咱小谈CLR
  5. 初识Docker和Windows Server容器
  6. mac下开发IOS代码管理
  7. git svn clone时间估算
  8. 资料,来自HTML5前端开发学习⑤群
  9. poj 2594 传递闭包+最大路径覆盖
  10. 打造高性能Java应用需掌握的5大知识
  11. CP2102模块介绍(USB转uart)
  12. Http协议、线程、线程池
  13. 创建range分区
  14. Standard Numeric Format Strings
  15. 简单计算器(Android)
  16. [Android学习笔记]jackson库的使用
  17. CSharp笔记&gt;&gt;&gt;多语言,注册
  18. 如何只在IE上加载CSS样式表
  19. 【代码审计】XYHCMS V3.5任意文件删除漏洞分析
  20. 数据分析与挖掘 - R语言:贝叶斯分类算法(案例一)

热门文章

  1. Qt编写数据可视化大屏界面电子看板3-新建布局
  2. Java 8 新特性之 Stream 流基础体验
  3. Crunch黑客神器-创造个性字典
  4. pynput模块—键盘鼠标操作和监听
  5. linux下安装mysql5.7方法与常见问题
  6. #Java第三周总结
  7. ARM 时区修改
  8. 9.centos7 安装mysql
  9. dev控件学习笔记之----CxGrid
  10. DAO语句如何定义属性类型