CSIC_716_20191125【面向对象编程--类以及类的实例化】
面向对象编程:是一种编程思想
对象的定义:特征与功能的集合体
优点:可扩展性强
缺点:编程复杂度高,难度偏大
类的定义:一系列对象之间相同特征与技能的结合体
调用类的时候(实例化是时候),发生的事情:
产生一个空对象的名称空间----------->触发__init__方法,并将对象名作为第一个参数传入------------>将其他参数一并传给__init__。
可以通过__dict__方法查看类和对象名称空间中的具体内容。
对类和对象进行查、增、删、改的具体操作:(此处类和对象的操作是相似的,以其中对象为例)
对象 = 类();obj = Student()
obj.name 查看obj对象name的值
obj.new = X 新增一个new属性,赋值为X
obj.name = Y 将obj对象的name属性修改为Y
del obj.new 删除objs=new属性
类实例化多个对象时,多个对象共用类中的数据,即指向同一个内存。(类的数据特性)
对个对象也都可以使用类中的函数,不过,这些函数谁调用就和谁绑定,称之为对象的绑定方法。(类的函数特性)
对象在调用绑定方法的时候,会将自身作为第一个参数传入绑定方法中,然后将其他参数一并传给绑定方法。
在python3中,类即类型。所有的数据类型都是类,都可以被实例化。故:一切皆对象
类与对象之间的交互
以下程序展示了两个类之间的交互。people和dog之间的互相攻击
class People:
camp = 'human' def __init__(self, name, attack, life):
self.attack = attack
self.name = name
self.life = life def attack1(self, target):
print(f'{self.name}开始攻击')
if target.life >= self.attack:
target.life -= self.attack
return True
else:
target.life = 0
print(f'{target.name}挂了')
return False class Dog:
camp = 'beast' def __init__(self, attack, name, life):
self.attack = attack
self.life = life
self.name = name def attack1(self, target):
print(f'{self.name}开始攻击')
if target.life >= self.attack:
target.life -= self.attack
return True
else:
target.life = 0
print(f'{target.name}挂了')
return False p1 = People('sun', 100000, 200)
d1 = Dog(30000, 'moon', 50000000) while True:
res = p1.attack1(d1)
if not res:
break
res2 = d1.attack1(p1)
if not res2:
break print(f'{p1.name}的血量为{p1.life}')
print(f'{d1.name}的血量为{d1.life}')
CSIC_716_20191125【面向对象编程--类以及类的实例化】的更多相关文章
- [.net 面向对象编程基础] (9) 类和类的实例
[.net 面向对象编程基础] (9) 类和类的实例 类 ,顾名思义就是分类.类别的意思.我们要面向对象编程,就需要对不同的事物进行分类.类可以说是.net面向对象的核心. 类:就是具有相同的属性和功 ...
- [.net 面向对象编程基础] (10) 类的成员(字段、属性、方法)
[.net 面向对象编程基础] (10) 类的成员(字段.属性.方法) 前面定义的Person的类,里面的成员包括:字段.属性.方法.事件等,此外,前面说的嵌套类也是类的成员. a.类的成员为分:静态 ...
- 《挑战30天C++入门极限》C++面向对象编程入门:类(class)
C++面向对象编程入门:类(class) 上两篇内容我们着重说了结构体相关知识的操作. 以后的内容我们将逐步完全以c++作为主体了,这也意味着我们的教程正式进入面向对象的编程了. 前面的教程我 ...
- Python:面向对象编程3 定制类(有更新)
Python:面向对象编程3 定制类(有更新) ⚠️本文主要内容为对Data model相关知识点的提取学习记录.(内容来自文档和部分网页教程案例) ⚠️:这个连接指向<流畅的python&g ...
- Java基础--面向对象编程1(类与对象)
1.类(class)的定义 类是对一组具有相同特征和行为的对象的抽象描述. 在程序中,引入类的概念,就是为了快速生成更多的具有相同特性和行为的事物. 2.对象(object)的定义 对象是类的具体实现 ...
- Python开发基础-Day17面向对象编程介绍、类和对象
面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.主要应用在一旦完成很少修改的地方,如linux ...
- python基础之面向对象编程介绍、类和对象
面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.主要应用在一旦完成很少修改的地方,如linux ...
- Day07:常用模块,面向对象编程(对象&类)及内置函数
今日内容:1.常用模块2.面向对象编程(*****) 介绍面向对象编程 类 对象3.内置函数------------------------------1.面向过程编程 核心“ ...
- 2016/1/17 笔记 1,面向对象编程OOP 2,类 全
面向对象编程OOP 编程方式的发展 1,面向过程 重用性低 维护工作量大 2,面向对象 重用性高 维护容易 概念 1,对象 Object 一个具体的事物 是类的实例 2,类Class 同一 ...
- python 面向对象编程 之 元类
元类是类的类,使我们自定义的类,即我们用class定义类本质就是元类,是类的模板 四步走: 一:控制class定义类的过程 1.先拿到类名 2.在拿到基类 3.执行类体代码,得到名称空间的dict 4 ...
随机推荐
- struts基础
六个基本包 struts2-core-2.1.6.jar :开发的核心类库 freemarker-2.3.13.jar :struts2的UI标签的模板使用freemarker编写 commons-l ...
- <人工智能>人工智能基础
问题1:扔下圆球的位置(feature特征变量)变化,最终掉落奖项(label结果标签)的变化 feature ----输入 f(x) ----模型,算法 label ----输出 大量已知的数据,训 ...
- CR0 - CR4 ,5个寄存器,留念,每次都要翻手册,太费事了
- ulimit - 获取和改变用户的限制设定
大纲 #include <ulimit.h> long ulimit(int cmd, long newlimit); 描述 警告: 这个函数已经被废弃. glibc 不再提供这个包含文件 ...
- 自行制作yum源仓库
背景 客户服务器为内网机器,centos7系统,且无法与外网连接.需要部署对应的LANMP环境及其它软件 解决思路 1.在阿里云服务器,利用阿里云的yum源仓库,下载对应软件及关联软件. 2.在客户机 ...
- leetcood学习笔记-112-路径总和
题目描述: 第一次提交: class Solution(object): def hasPathSum(self, root, sum): """ :type root: ...
- Java笔记目录
目录 一.Java语言概述... 1 1.计算机语言发展史... 1 1.1计算机语言的发展... 1 1.2人与计算机做交互... 1 1.3计算机语言... 1 1.4软件... 1 2.Java ...
- selenium 无头浏览器headless browser
无头浏览器,即没有界面的浏览器,浏览器该有的功能特性都有. if browser.lower() == "chrome": # 无头浏览器 chrome_opt = webdriv ...
- NX二次开发-UFUN创建表达式UF_MODL_create_exp_tag有TAG
NX9+VS2012 #include <uf.h> #include <uf_modl.h> UF_initialize(); //创建一个新的表达式,无TAG UF_MOD ...
- Golang 交叉编译跨平台的可执行程序 (Mac、Linux、Windows )
起因: 在项目中,我们每一次提交都需要添加commit 信息,而且我们的commit 信息,比较繁琐.我决定用golang语言编写一个小工具. 我决定使用语言:golang,使用工具:gox包. go ...