一、类的相关概念

(1)、什么是类

具有同种属性的对象称为类,是个抽象的概念。比如说:汽车、人、狗、神;

(2)、什么是对象或实例

日常生活中的所有东西都是对象,是类的实例化。比如说:推土车是汽车的实例化,集数据属性和方法属性为一身的就是一个对象。

二、类属性、实例属性

(1)、类属性

类属性从字面意义上说就是类所具有的属性,可以理解为一个类中的全局变量。

(2)、实例属性

类实例化成实例对象所具有的属性

举个例子:

  1. class School_cla:
  2. s_name = "清华" 这个就是类属性
  3. def __init__(self,username,title):
  4. self.username = username 类实例化后__init__函数里面的都是实例属性
  5. self.title = title
  6.  
  7. def teach_knowlage(self):
  8. print("%s 正在教学" % self.username)
  9.  
  10. def up_level(self):
  11. print("%s 是%s" %(self.username,self.title))
  12.  
  13. print(School_cla.__dict__)
  14. p1 = School_cla("liu","engneer")
  15. print(p1.__dict__)
  16.  
  17. ###输出
  18. {'__module__': '__main__', 's_name': '清华', '__init__': <function School_cla.__init__ at 0x000001F21A7FC8C8>, 'teach_knowlage': <function School_cla.teach_knowlage at 0x000001F21A7FC950>, 'up_level': <function School_cla.up_level at 0x000001F21A7FC9D8>, '__dict__': <attribute '__dict__' of 'School_cla' objects>, '__weakref__': <attribute '__weakref__' of 'School_cla' objects>, '__doc__': None}
  19. {'username': 'liu', 'title': 'engneer'}

(3)、类属性的增删改

  1. class School_cla:
  2. s_name = "清华"
  3. def __init__(self,username,title):
  4. self.username = username
  5. self.title = title
  6.  
  7. def teach_knowlage(self):
  8. print("%s 正在教学" % self.username)
  9.  
  10. def up_level(self):
  11. print("%s 是%s" %(self.username,self.title))
  12. School_cla.addr = "北京" 增加
  13. School_cla.name = "北大" 修改
  14. del School_cla.name 删除
  15. print(School_cla.__dict__)
  16.  
  17. ##显示
  18. {'__module__': '__main__', 's_name': '清华', '__init__': <function School_cla.__init__ at 0x00000260F0B0C950>, 'teach_knowlage': <function School_cla.teach_knowlage at 0x00000260F0B0C9D8>, 'up_level': <function School_cla.up_level at 0x00000260F0B0CA60>, '__dict__': <attribute '__dict__' of 'School_cla' objects>, '__weakref__': <attribute '__weakref__' of 'School_cla' objects>, '__doc__': None, 'addr': '北京'}

(4)、实例属性的增删改

  1. class School_cla:
  2. s_name = "清华"
  3. def __init__(self,username,title):
  4. self.username = username
  5. self.title = title
  6.  
  7. def teach_knowlage(self):
  8. print("%s 正在教学" % self.username)
  9.  
  10. def up_level(self):
  11. print("%s 是%s" %(self.username,self.title))
  12.  
  13. p1 = School_cla("liu","engneer")
  14. p1.money = "" 增加
  15. p1.username="ma" 修改
  16. del p1.title 删除
  17. print(p1.__dict__)
  18.  
  19. ##显示
  20. {'username': 'ma', 'money': ''}

三、类的组合

类的组合是将类与类之前关联起来的一种手段

如下例子:

  1. class School:
  2. def __init__(self,name,addr,teacher,course):
  3. self.name = name
  4. self.addr = addr
  5. self.teacher = teacher
  6. self.course = course
  7.  
  8. def enrol_students(self):
  9. print("%s 正在招收 %s 学生" % (self.name,self.course))
  10.  
  11. class Course:
  12. def __init__(self,name,money,teacher):
  13. self.name = name
  14. self.money = money
  15. self.teacher = teacher
  16.  
  17. def course_teacher(self):
  18. print("%s 的授课老师是%s" % (self.name,self.teacher))
  19.  
  20. class Teacher:
  21. def __init__(self,name,course,money):
  22. self.name = name
  23. self.course = course
  24. self.money = money
  25.  
  26. def make_money(self):
  27. print("%s 教受 %s 的课程,每节课可以赚到%s" % (self.name,self.course,self.money))
  28.  
  29. user1 = Teacher("刘老师","python","")
  30. user2 = Teacher("林老师","linux","")
  31. user3 = Teacher("何老师","C","")
  32. # school1 = School()
  33. course_msg = {
  34. "": "python",
  35. "": "linux",
  36. "": "C",
  37. }
  38. user_msg = {
  39. "": "刘老师",
  40. "": "林老师",
  41. "": "何老师",
  42. }
  43. school_msg = {
  44. "": "北京",
  45. "": "上海",
  46. "": "广州",
  47. }
  48. while True:
  49. print("欢迎来到清华学习")
  50. print(school_msg)
  51. print(course_msg)
  52. print(user_msg)
  53. s_input = input("选择授课地点:")
  54. c_input = input("请选择要学的课程:")
  55. u_input = input("请选择授课老师:")
  56. user_dict = {
  57. "":user1,
  58. "":user2,
  59. "":user3,
  60. }
  61. course_money = {
  62. "python":30000,
  63. "linux":20000,
  64. "C":25000,
  65. }
  66. s1=School("清华",school_msg[s_input],user_dict[u_input],course_msg[c_input])
  67. c1 = Course(course_msg[c_input],course_money[user_dict[u_input].course],user_dict[u_input])
  68. print("你选择了%s 在%s的校区学校,选择了%s 课程,学费是%s 授课老师是%s" %(s1.name,s1.addr,c1.name,c1.money,s1.teacher.name))
  69. break
  70.  
  71. #输出
  72. 欢迎来到清华学校
  73. {'': '北京', '': '上海', '': '广州'}
  74. {'': 'python', '': 'linux', '': 'C'}
  75. {'': '刘老师', '': '林老师', '': '何老师'}
  76. 选择授课地点:1
  77. 请选择要学的课程:1
  78. 请选择授课老师:1
  79. 你选择了清华 在北京的校区学习,选择了python 课程,学费是30000 授课老师是刘老师

类组合的例子

这个例子写的不是很好,后面再改,应该要遵循大类包含小类,而大部分功能不同的情况下。

python类的相关知识第一部分的更多相关文章

  1. python类的相关知识第二部分

    类的继承.多态.封装 一.类的继承 1.应用场景: 类大部分功能相同,大类包含小类的情况 例如: 动物类 共性:都要吃喝拉撒.都有头有脚 特性: 猫类.走了很轻,叫声特别,喜欢白天睡觉 狗类.的叫声很 ...

  2. Python面对对象相关知识总结

    很有一段时间没使用python了,前两天研究微信公众号使用了下python的django服务,感觉好多知识都遗忘了,毕竟之前没有深入的实践,长期不使用就忘得快.本博的主要目的就是对Python中我认为 ...

  3. python 类编程相关内容(更新)

    python作为面向对象的编程语言,类和对象相关的编程当然是少不了的! python类: class 类名 : 变量名 [ = 初始值 ] …… def 函数名 ( self [ , 其余参数列表 ] ...

  4. Python中元组相关知识

    下面给大家介绍以下元组的相关知识: ·元组可以看成是一个不可更改的list 1.元组的创建 # 创建空元祖 t = () print(type(t)) # 创建只有一个值的元组 # 观察可知元组中如果 ...

  5. Python 网络编程相关知识学习

    Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...

  6. python之类的相关知识

    面向对象技术简介 类: 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类变量:类变量在整个实例化的对象中是公用的.类变量定义在类中且在函数体之 ...

  7. python类(4)——自己造第一个轮子

    先做简单版本,再一步步增加功能 1.简单目的:要实现这样一个功能,能够连接服务器,登录账号,查询账号委托信息,如果有委托信息,撤销委托. 属性(不同账户之间差别):账户,密码 方法(不同账户之间都要用 ...

  8. 深入理解ES6之——JS类的相关知识

    基本的类声明 类声明以class关键字开始,其后是类的名称:剩余部分的语法看起来像对象字面量中的方法简写,并且在方法之间不需要使用逗号. class Person { //等价于prototype的构 ...

  9. python 列表list相关知识

    List的元素可以是Python的任意数据类型(Boolean,Number,String,List,Dict,Set……) List同样可以使用索引和切片,切片得到的结果也是列表. print(li ...

随机推荐

  1. mysql 查询锁,解锁语句

    一:锁表: 锁定数据表,避免在备份过程中,表被更新 mysql>LOCK TABLES tbl_name READ; 为表增加一个写锁定: mysql>LOCK TABLES tbl_na ...

  2. 我的Android进阶之旅------&gt;Android关于Activity管理的一个简单封装

    怎样管理当前的执行Activity栈,怎样彻底退出程序.本文封装了一个Activity管理类,能够方便随时退出程序. import java.util.Stack; import android.ap ...

  3. 使用ZBar来读取条形码和二维码的方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. 1.使用ZBar项目.下载地址是: http://zbar.sourceforge.net/iphone/index.html 2.新建一个项目. ...

  4. QT .pro文件 LIBS用法详解

    在程序中需要使用到团队其它成员开发的静态库和动态库,起初是知道使用LIBS变量在在.pro文件中指定需要包含的库,但是实际使用的时候却遇到很大麻烦,但其实确实是因为自己看官方文档不太用心造成的. 下面 ...

  5. vue 单文件组件

    在很多vue项目中,我们使用vue.component来定义全局组件,紧接着用new Vue({el:'#container'})在每个页面内指定一个容器元素 这种方式在很多中小规模的项目中运作的很好 ...

  6. 自己动手搞定支付宝手机Wap网站支付接口 FOR ECShop

    支付宝WAP网站版本的支付接口网上整合的比较少,看到很多网站在卖,顿觉无语. 主要是得自己查看支付宝官方提供的SDK中的开发文档. 支付宝sdk下载地址:https://doc.open.alipay ...

  7. undefined reference to错误

    最近在移植开发openssl库时,编译自己的动态库遇到undefined reference to错误,在此记录一下 从openssl官网移植openssl库,得到libssl.a和libcrypto ...

  8. 真正解决 Android Studio无法启动,gradle下载不了 提示“building “ 项目名”gradle project info”(原创20131216)

    最近开始研究Android Studio 开发,但是在开始的时候,一直下载gradle,弄了四天,都没有成功,什么FQ,什么设置gradle路径,都没有解决,但是有一次在公司的电脑上很成功的更新了,完 ...

  9. mybatis慢查询配置

    <?xml version="1.0" encoding="UTF-8"?> <!--suppress SpringFacetInspecti ...

  10. 简单的SpringCloud 熔断Hystrix

    pom配置 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId> ...