前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >类与对象

类与对象

作者头像
py3study
发布2020-01-15 01:07:29
6080
发布2020-01-15 01:07:29
举报
文章被收录于专栏:python3python3

类与对象

  • 类的意思:种类、分类、类别

对象是特征与技能的结合体,我可能有身高体重、而你也有身高体重,所以你会说你像我,但是你一定不会说你像阿猫阿狗。并且我和你其实就可以说成是一类,而你和选课系统不能说是一类,因此给出类的定义:类就是一系列对象相似的特征与技能的结合体。

83-类与对象-阿猫阿狗.jpg
83-类与对象-阿猫阿狗.jpg

在现实世界中:先有一个个具体存在的对象,然后随着人类文明的发展才了分类的概念,既然现实世界中有类这个概念,Python程序中也一定有类这个概念,但是在Python程序中:必须先定义类,然后调用类来产生对象。

现实世界中定义类和对象

定义对象

83-类与对象-选课系统.jpg
83-类与对象-选课系统.jpg

就拿未来我们的选课系统来讲,我们先总结一套现实世界中的学生对象:

  • 对象1:
    • 特征:
      • 学校='oldboy'
      • 姓名='耗哥'
      • 年龄=18
      • 性别='male'
    • 技能:
      • 选课
  • 对象2:
    • 特征:
      • 学校='oldboy'
      • 姓名='猪哥'
      • 年龄=17
      • 性别='male'
    • 技能:
      • 选课
  • 对象3:
    • 特征:
      • 学校='oldboy'
      • 姓名='帅翔'
      • 年龄=19
      • 性别='female'
    • 技能:
      • 选课

定义对象

站在未来选课系统的角度,我们还可以总结现实世界中的学生类:

  • 老男孩学生类:
    • 相似的特征:
      • 学校='oldboy'
    • 相似的技能
      • 选课

程序中定义类和对象

定义类

代码语言:javascript
复制
# 注意类中定义变量使用驼峰体
class OldboyStudent():
    school = 'oldboy'

    def choose_course(self):
        print('is choosing course')
  • 曾经定义函数,函数只检测语法,不执行代码,但是定义类的时候,类体代码会在类定义阶段就立刻执行,并且会产生一个类的名称空间,也就是说类的本身其实就是一个容器/名称空间,是用来存放名字的,这是类的用途之一
83-类与对象-名称空间.jpg
83-类与对象-名称空间.jpg
代码语言:javascript
复制
print(OldboyStudent.__dict__)
代码语言:javascript
复制
{'__module__': '__main__', 'school': 'oldboy', 'choose_course': <function OldboyStudent.choose_course at 0x10d653ae8>, '__dict__': <attribute '__dict__' of 'OldboyStudent' objects>, '__weakref__': <attribute '__weakref__' of 'OldboyStudent' objects>, '__doc__': None}
代码语言:javascript
复制
print(OldboyStudent.__dict__['school'])
代码语言:javascript
复制
oldboy
代码语言:javascript
复制
print(OldboyStudent.__dict__['choose_course'])
代码语言:javascript
复制
<function OldboyStudent.choose_course at 0x10d653ae8>
代码语言:javascript
复制
try:
    OldboyStudent.__dict__['choose_course']()
except Exception as e:
    print('error:', e)
代码语言:javascript
复制
error: choose_course() missing 1 required positional argument: 'self'
代码语言:javascript
复制
print(OldboyStudent.school)
代码语言:javascript
复制
oldboy
代码语言:javascript
复制
OldboyStudent.choose_course(111)
代码语言:javascript
复制
is choosing course
代码语言:javascript
复制
print(OldboyStudent.choose_course)
代码语言:javascript
复制
<function OldboyStudent.choose_course at 0x10d653ae8>
代码语言:javascript
复制
OldboyStudent.__dict__['choose_course']
代码语言:javascript
复制
<function __main__.OldboyStudent.choose_course(self)>
代码语言:javascript
复制
OldboyStudent.country='China'
代码语言:javascript
复制
OldboyStudent.__dict__['country']
代码语言:javascript
复制
'China'
代码语言:javascript
复制
OldboyStudent.country='CHINA'
代码语言:javascript
复制
OldboyStudent.__dict__['country']
代码语言:javascript
复制
'CHINA'
代码语言:javascript
复制
del OldboyStudent.school
代码语言:javascript
复制
print(OldboyStudent.__dict__)
代码语言:javascript
复制
{'__module__': '__main__', 'school': 'oldboy', 'choose_course': <function OldboyStudent.choose_course at 0x10d653ae8>, '__dict__': <attribute '__dict__' of 'OldboyStudent' objects>, '__weakref__': <attribute '__weakref__' of 'OldboyStudent' objects>, '__doc__': None, 'country': 'CHINA'}

定义对象

  • 调用类即可产生对象,调用类的过程,又称为类的实例化,实例化的结果称为类的对象/实例
83-类与对象-实例化.jpg
83-类与对象-实例化.jpg
代码语言:javascript
复制
stu1=OldboyStudent() # 调用类会得到一个返回值,该返回值就是类的一个具体存在的对象/实例
print(stu1.school)
代码语言:javascript
复制
oldboy
代码语言:javascript
复制
stu2=OldboyStudent() # 调用类会得到一个返回值,该返回值就是类的一个具体存在的对象/实例
print(stu2.school)
代码语言:javascript
复制
oldboy
代码语言:javascript
复制
stu3=OldboyStudent() # 调用类会得到一个返回值,该返回值就是类的一个具体存在的对象/实例
stu3.choose_course()
代码语言:javascript
复制
is choosing course
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 现实世界中定义类和对象
    • 定义对象
      • 定义对象
      • 程序中定义类和对象
        • 定义类
          • 定义对象
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档