一、类的相关概念

(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. PHP REST架构简单设计

    REST是什么? REST(Representational State Transfer表述性状态转移)是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性. REST的特点 ...

  2. js setInterval()函数 [倒计时用]

    定义和用法:        setInterval() 方法用于在指定的毫秒数后调用函数或计算表达式.它与setTimeout()方法不同的是前者可以无限的循环,不会受调用函数的限制,要想退出此循环可 ...

  3. 深度CTR预估模型中的特征自动组合机制演化简史 zz

    众所周知,深度学习在计算机视觉.语音识别.自然语言处理等领域最先取得突破并成为主流方法.但是,深度学习为什么是在这些领域而不是其他领域最先成功呢?我想一个原因就是图像.语音.文本数据在空间和时间上具有 ...

  4. IoC容器Autofac学习笔记

    一.一个没有使用IoC的例子 IoC的全称是Inversion of Control,中文叫控制反转.要理解控制反转,可以看看非控制反转的一个例子. public class MPGMovieList ...

  5. Atitit.request http乱码的设计防止 检测与解决最近实践p825 attilax总结.doc

    Atitit.request http乱码的设计防止 检测与解决最近实践p825 attilax总结.doc 1 浏览器判断一个页面的编码有俩个途径, 一种是通过HTTP响应头, 一个是通过meta: ...

  6. [svc]jdk1.7.0_13(系列)下载url

    蛋疼了,这个版本,找了老半天没找到 最后是同事找到的 http://download.oracle.com/otn/java/jdk/7u13-b20/jdk-7u13-linux-x64.tar.g ...

  7. C#生日提醒小工具

    一个很粗糙的版本,就当一个小例子看一下吧, 运行效果如下: 开发环境VS2017,用的WinForm,涉及一点xml,直接上图. 一.项目涉及的文件如下图: 二.每个文件内容: 1.MainForm  ...

  8. java 发送带Basic Auth认证的http post请求实例代码

    构造http header private static final String URL = "url"; private static final String APP_KEY ...

  9. iOS9新特性

    本文主要是说一些iOS9适配中出现的坑,如果只是要单纯的了解iOS9新特性可以看瞄神的开发者所需要知道的 iOS 9 SDK 新特性.9月17日凌晨,苹果给用户推送了iOS9正式版,随着有用户陆续升级 ...

  10. LNK2019: 无法解析的外部符号(函数实现没有加namespace前缀导致)

    问题描述: 在A.h中,我写了如下函数 namespace XXX { void func(); } 在A.cpp中,我写了如下实现 #include "A.h" using na ...