一、类的相关概念

(1)、什么是类

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

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

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

二、类属性、实例属性

(1)、类属性

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

(2)、实例属性

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

举个例子:

 class School_cla:
s_name = "清华" 这个就是类属性
def __init__(self,username,title):
self.username = username 类实例化后__init__函数里面的都是实例属性
self.title = title def teach_knowlage(self):
print("%s 正在教学" % self.username) def up_level(self):
print("%s 是%s" %(self.username,self.title)) print(School_cla.__dict__)
p1 = School_cla("liu","engneer")
print(p1.__dict__) ###输出
{'__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}
{'username': 'liu', 'title': 'engneer'}

(3)、类属性的增删改

 class School_cla:
s_name = "清华"
def __init__(self,username,title):
self.username = username
self.title = title def teach_knowlage(self):
print("%s 正在教学" % self.username) def up_level(self):
print("%s 是%s" %(self.username,self.title))
School_cla.addr = "北京" 增加
School_cla.name = "北大" 修改
del School_cla.name 删除
print(School_cla.__dict__) ##显示
{'__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)、实例属性的增删改

class School_cla:
s_name = "清华"
def __init__(self,username,title):
self.username = username
self.title = title def teach_knowlage(self):
print("%s 正在教学" % self.username) def up_level(self):
print("%s 是%s" %(self.username,self.title)) p1 = School_cla("liu","engneer")
p1.money = "" 增加
p1.username="ma" 修改
del p1.title 删除
print(p1.__dict__) ##显示
{'username': 'ma', 'money': ''}

三、类的组合

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

如下例子:

 class School:
def __init__(self,name,addr,teacher,course):
self.name = name
self.addr = addr
self.teacher = teacher
self.course = course def enrol_students(self):
print("%s 正在招收 %s 学生" % (self.name,self.course)) class Course:
def __init__(self,name,money,teacher):
self.name = name
self.money = money
self.teacher = teacher def course_teacher(self):
print("%s 的授课老师是%s" % (self.name,self.teacher)) class Teacher:
def __init__(self,name,course,money):
self.name = name
self.course = course
self.money = money def make_money(self):
print("%s 教受 %s 的课程,每节课可以赚到%s" % (self.name,self.course,self.money)) user1 = Teacher("刘老师","python","")
user2 = Teacher("林老师","linux","")
user3 = Teacher("何老师","C","")
# school1 = School()
course_msg = {
"": "python",
"": "linux",
"": "C",
}
user_msg = {
"": "刘老师",
"": "林老师",
"": "何老师",
}
school_msg = {
"": "北京",
"": "上海",
"": "广州",
}
while True:
print("欢迎来到清华学习")
print(school_msg)
print(course_msg)
print(user_msg)
s_input = input("选择授课地点:")
c_input = input("请选择要学的课程:")
u_input = input("请选择授课老师:")
user_dict = {
"":user1,
"":user2,
"":user3,
}
course_money = {
"python":30000,
"linux":20000,
"C":25000,
}
s1=School("清华",school_msg[s_input],user_dict[u_input],course_msg[c_input])
c1 = Course(course_msg[c_input],course_money[user_dict[u_input].course],user_dict[u_input])
print("你选择了%s 在%s的校区学校,选择了%s 课程,学费是%s 授课老师是%s" %(s1.name,s1.addr,c1.name,c1.money,s1.teacher.name))
break #输出
欢迎来到清华学校
{'': '北京', '': '上海', '': '广州'}
{'': 'python', '': 'linux', '': 'C'}
{'': '刘老师', '': '林老师', '': '何老师'}
选择授课地点:1
请选择要学的课程:1
请选择授课老师:1
你选择了清华 在北京的校区学习,选择了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. SET IDENTITY_INSERT <Table Name> ON/OFF 转载

    This command is from SQL Server.  This command is to enable the users to set their own value for IDE ...

  2. [na] centos如何通过vmware Windows共享文件

    参考 自我感觉都会使用Windows中的文件.在Windows与linux之间互传文件是一个问题.本方法介绍的是在linux下挂载Windows共享文件夹的方法来实现的 首先安装VMware Tool ...

  3. CSRF学习笔记之CSRF的攻击与防御以及审计【00x1 】

    +++++++++++++++++++++++++++ + 00x1 实现简单的攻击 + 00x2 代码审计漏洞的源头 +++++++++++++++++++++++++++ 00x1 简单的csrf ...

  4. OkHttp+Stetho+Chrome调试android网络部分(原创)

    android网络调试一直是一个比较麻烦的部分,因为在不同序列的请求中,返回的数据会有不同的变化,如果能像web开发一样使用调试功能查看页面的访问数据该是多么美好的事情! 很幸运的是,现在Androi ...

  5. 线程同步工具CountDownLatch

    CountDownLatch的一个非常典型的应用场景是:有一个任务想要往下执行,但必须要等到其他的任务执行完毕后才可以继续往下执行.假如我们这个想要继续往下执行的任务调用一个CountDownLatc ...

  6. Firefox模拟手机访问手机网站

    说明: 此方法只能用以那些以识别UA来判断的网站 使用步骤: 第一步:打开Firefox,点击菜单,工具-〉附加组件-〉获取附加组件: 第二步:查询安装三个组件:User Agent Switcher ...

  7. cocos2dx lua 3.10 使用cjson

    本篇介绍如何在lua中使用cjson对数据进行json的encode与decode,首先简单介绍下cjson: Lua CJSON 是 Lua 语言提供高性能的 JSON 解析器和编码器,其性能比纯 ...

  8. 【分享】DevDocs API Documentation

    http://devdocs.io/ 这是一份综合性的在线API列表,很全,方便查找.

  9. AutoMapper整理收集

    http://www.cnblogs.com/jobs2/p/3503990.html http://www.cnblogs.com/1-2-3/p/AutoMapper-Best-Practice. ...

  10. Android开发:《Gradle Recipes for Android》阅读笔记(翻译)4.4——自定义代码集合

    问题: 你想要在项目中使用非标准的代码目录. 解决方案: 在gradle的build配置里面使用sourceSets属性. 讨论: Android分发的samples里面使用多个代码目录,使得通用的文 ...