python基础学习Day15 面向对象、类名称空间、对象名称空间 (2)
一、类
先看一段代码:
- class Person:
- animal = '高级动物'
- walk_way = '直立行走' # 静态属性,静态变量,静态字段
- language = '语言'
- def __init__(self,name,age,work): # 函数 动态属性,方法
- # print(self)
- self.name = name
- self.age = age
- self.work = work
- def eat(self):
- print('吃吃')
- def work(self):
- print('工作')
- obj = Person('alex',25,'it')
class: 类 Person:类名
类:具有相同属性或者功能的一类实物
对象:对象是类的具体体现。
# 结构上理解:面向对象分两个部分,静态属性 动态属性 (属性、方法)
特点:
(1)函数封装一个功能,而面向对象封装多个相关的功能
(2)面向对象是抽象的,它是一种思想,站在上帝的角度去理解他
(3)程序可扩展,对象都是一个个独立的。耦合性,差异性。
类名:
(1)查看类中的所有属性及方法:__dict__
print(Person.__dict__)
print(Person.__dict__['animal']) # 单独查看某个属性
# 工作中,一般只会用__dict__查看类中的所有属性,不进行其他操作
(2)查看(增删改)类中某个,某些属性,用万能的点'.'
- # print(Person.animal) # 查
# Person.name = 'alex' # 增 \改
# print(Person.name)
# del Person.walk_way # 删
# print(Person.__dict__)
(3) 函数的操作方法。一般不通过类名来操作
Person.work(666) # 可以操作函数
二、对象
先看代码:
- class Person:
- animal = '高级动物'
- walk_way = '直立行走'
- language = '语言'
- def __init__(self,name,age,work):
- # print(self)
- self.name = name
- self.age = age
- self.work = work
- def eat(self):
- print('吃吃')
- def work(self):
- print('工作')
- obj = Person('alex',25,'it') # 这是一个实例化过程,实例化一个内存空间(即对象空间)
- # print(obj)
- # print(obj.age)
- # print(obj.work)
- # print(obj.name)
- obj.hobby = 'tesla'
- print(obj.__dict__)
- obj.name = 'Chris'
- print(obj.__dict__)
- del obj.work
- print(obj.__dict__)
- obj.animal = '低等动物'
- print(obj.__dict__) # 给对象添加了animal的属性
- print(Person.__dict__)
- print(obj.animal)
- print(Person.animal)
- # print(obj)
- obj.eat()
# 对象
# 对象操作对象空间
#查看所有属性__dict__
# print(obj.__dict__) #
# 对对象的某个属性 增删改查 万能的点
- obj.hobby = 'tesla' # 增
- obj.name = 'Chris' # 改
- del obj.work # 删
- print(obj.name) # 查
- 类执行的过程图
三、组合
先看代码:
- class Gamerole:
- def __init__(self,nickname,ad,hp):
- self.nickname = nickname
- self.ad = ad
- self.hp = hp
- def equip_weapon(self, w): # 给人物封装了一个武器属性,这个属性值是Weapon的一个对象
- self.equip_weapon = w # 组合
- class Weapon:
- def __init__(self,name,ad):
- self.name = name
- self.ad = ad
- def fight(self,role1,role2): # 此时的self为武器的内存地址
- role2.hp = role2.hp - self.ad - role1.ad # 此时 role1、role2分别为p1、p2
- print('%s 用 %s 攻击了%s, %s掉了%s血,还剩%s血'\
- %(role1.nickname,self.name,role2.nickname,role2.nickname,self.ad + role.ad,role2.hp))
- p1 = Gamerole('盖伦',20,500)
- p2 = Gamerole('剑豪',100,200)
- w1 = Weapon('大宝剑',30)
- w2 = Weapon('武士刀',80)
- p2.equip_weapon(w2)
- p2.equip_weapon.fight(p2,p1)
- 结果为:
剑豪 用 武士刀 攻击了盖伦, 盖伦掉了180血,还剩320血
插入解释图片:
python基础学习Day15 面向对象、类名称空间、对象名称空间 (2)的更多相关文章
- python基础学习Day17 面向对象的三大特性之继承、类与对象名称空间小试
一.课前回顾 类:具有相同属性和方法的一类事物 实例化:类名() 过程: 开辟了一块内存空间 执行init方法 封装属性 自动的把self返回给实例化对象的地方 对象:实例 一个实实在在存在的实体 组 ...
- python基础学习 Day19 面向对象的三大特性之多态、封装 property的用法(1)
一.课前内容回顾 继承作用:提高代码的重用性(要继承父类的子类都实现相同的方法:抽象类.接口) 继承解释:当你开始编写两个类的时候,出现了重复的代码,通过继承来简化代码,把重复的代码放在父类中. 单继 ...
- python基础学习 Day19 面向对象的三大特性之多态、封装
一.课前内容回顾 继承作用:提高代码的重用性(要继承父类的子类都实现相同的方法:抽象类.接口) 继承解释:当你开始编写两个类的时候,出现了重复的代码,通过继承来简化代码,把重复的代码放在父类中. 单继 ...
- python基础学习笔记——面向对象初识
面向对象初识 python中一切皆对象. 类有两种: 新式类:在py3中所有类都是新式类 经典类:在py2中只有类本身继承了object类才叫做新式类,默认是经典类 class Person: cou ...
- 【python系统学习13】类(class)与对象(object)
目录: 类(class)和实例 类 实例 小测试 对象(object) 属性和方法 类的创建 伪代码 示例代码 属性(attribute) 方法(method) 类的实例化 实例对象调用类属性和方法 ...
- Python 基础学习 总结篇
Python 基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结 ...
- python基础——实例属性和类属性
python基础——实例属性和类属性 由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(objec ...
- Day1 Python基础学习
一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作 ...
- python入门学习:8.类
python入门学习:8.类 关键点:类 8.1 创建和使用类8.2 使用类和实例8.3 继承8.4 导入类 8.1 创建和使用类 面向对象编程是最有效的软件编写方法之一.在面向对象编程中,你编写 ...
随机推荐
- Linux性能优化 第五章 性能工具:特定进程内存
5.1 Linux内存子系统 在诊断内存性能问题的时候,也许有必要观察应用程序在内存子系统的不同层次上是怎样执行的.在顶层,操作系统决定如何利用交换内存和物理内存.它决定应用程序的哪一块地址空间将被放 ...
- idea一个窗口开启多个项目
在将旧项目重构为微服务架构时,建立了十几个新的项目,对于相互之间存在调用的微服务,开发时都要同时启动,一开始我开了好多个idea窗口,结果电脑卡的不行,后来发现原来可以将项目都放到同一个idea窗口进 ...
- 使用vim时生成的.swp文件
1. 在使用vim时,退出编辑后,发现生成了swp文件,如下: 发现用vim打开一个文件时,都会产生一个.swp的隐藏文件(即文件名.开头的),这个文件是一个临时交换文件,用来备份缓冲区中的内容,用于 ...
- 4.HTML+CSS制作个月亮
效果地址:https://codepen.io/flyingliao/pen/LaRmJr?editors=1100 感想:还有缺陷,需后期补充.完善. HTML code: <div clas ...
- tensorflow 入门
1. tensorflow 官方文档中文版(下载) 2. tensorflow mac安装参考 http://www.tuicool.com/articles/Fni2Yr 3. 源码例子目录 l ...
- 关于Linux(时间网路同步)
Linux 时间同步只针对命令行界面,图形界面请自行摸索. 转自Linux下ntpdate时间同步
- leetcode1011
class Solution: def shipWithinDays(self, weights: 'List[int]', D: int) -> int: left = max(weights ...
- Swoole 内存操作(Table)
使用: //实例化表格,参数 int : 最大行数 $table = new swoole_table(1024); //设置表格字段 参数 (字段名:string , 字段类型:int.float. ...
- QT,QT SDK, QT Creator 区别
Qt是一个跨平台的C++图形用户界面应用程序框架.(不仅仅是C++,还包括QML,Qquick,html5)它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能.Qt是完全面向对象的,很容易扩 ...
- delphi RTTI 四 获取类属性列表
delphi RTTI 四 获取类属性列表 GetPropList(btn1.ClassInfo, tkAny, PropList) PropCount := GetTypeData(btn1.Cla ...