一、类

先看一段代码:

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)的更多相关文章

  1. python基础学习Day17 面向对象的三大特性之继承、类与对象名称空间小试

    一.课前回顾 类:具有相同属性和方法的一类事物 实例化:类名() 过程: 开辟了一块内存空间 执行init方法 封装属性 自动的把self返回给实例化对象的地方 对象:实例 一个实实在在存在的实体 组 ...

  2. python基础学习 Day19 面向对象的三大特性之多态、封装 property的用法(1)

    一.课前内容回顾 继承作用:提高代码的重用性(要继承父类的子类都实现相同的方法:抽象类.接口) 继承解释:当你开始编写两个类的时候,出现了重复的代码,通过继承来简化代码,把重复的代码放在父类中. 单继 ...

  3. python基础学习 Day19 面向对象的三大特性之多态、封装

    一.课前内容回顾 继承作用:提高代码的重用性(要继承父类的子类都实现相同的方法:抽象类.接口) 继承解释:当你开始编写两个类的时候,出现了重复的代码,通过继承来简化代码,把重复的代码放在父类中. 单继 ...

  4. python基础学习笔记——面向对象初识

    面向对象初识 python中一切皆对象. 类有两种: 新式类:在py3中所有类都是新式类 经典类:在py2中只有类本身继承了object类才叫做新式类,默认是经典类 class Person: cou ...

  5. 【python系统学习13】类(class)与对象(object)

    目录: 类(class)和实例 类 实例 小测试 对象(object) 属性和方法 类的创建 伪代码 示例代码 属性(attribute) 方法(method) 类的实例化 实例对象调用类属性和方法 ...

  6. Python 基础学习 总结篇

    Python 基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结 ...

  7. python基础——实例属性和类属性

    python基础——实例属性和类属性 由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(objec ...

  8. Day1 Python基础学习

    一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作 ...

  9. python入门学习:8.类

    python入门学习:8.类 关键点:类 8.1 创建和使用类8.2 使用类和实例8.3 继承8.4 导入类 8.1 创建和使用类   面向对象编程是最有效的软件编写方法之一.在面向对象编程中,你编写 ...

随机推荐

  1. Linux性能优化 第四章 性能工具:特定进程CPU

    4.1进程性能统计信息 4.1.1. 内核时间VS用户时间 一个应用程序所耗时间最基本的划分是内核时间与用户时间.内核时间是消耗在Linux内核上的时间,而用户时间则是消耗在应用程序或库代码上的时间. ...

  2. SQL with(unlock)与with(readpast)

    所有Select加 With (NoLock)解决阻塞死锁,在查询语句中使用 NOLOCK 和 READPAST 处理一个数据库死锁的异常时候,其中一个建议就是使用 NOLOCK 或者 READPAS ...

  3. linux命令之vi文本编辑器

    vi filename :打开或新建文件,并将光标置于第一行首 按i,开始输入(insert) d删除整行 u   撤销上一步的操作Ctrl+r 恢复上一步被撤销的操作 ESC退出输入 按ESC键 跳 ...

  4. alias with parameter,linux

    alias demoAlias1='_(){ git checkout -b $1; command2;}; _'

  5. 关于SqlServer2008小记(查询数据库连接数,强行干掉连接)

    查询连接数 select count(*) from master.dbo.sysprocesses 这条语句查出来的是所有连接到本机(或者连接到本服务器)的连接数,并非是某一个库的连接数. 查询连接 ...

  6. Structs 2 session 学习

    后台获取 值类型  request.getSession().setAttribute("username", user.getUserName());  对象类型   reque ...

  7. [Unity算法]斜抛运动

    斜抛运动: 1.物体以一定的初速度斜向射出去,物体所做的这类运动叫做斜抛运动. 2.斜抛运动看成是作水平方向的匀速直线运动和竖直方向的竖直上抛运动的合运动. 3.它的运动轨迹是抛物线. Oblique ...

  8. Git工作流基础简介【与产品经理.jpg】

    基于可视化界面的操作可使用Sourcetree这个软件进行操作. 下面将描绘的几个命令主要是 git init git add git commit git status git reset HEAD ...

  9. StringBuffer 清除内容

    在开发的时候,经常使用StringBuffer来进行字符串的拼接.如果反复的做字符串拼接时,有时需要清空Stringbuffer中的内容,然后再拼接新的字符串信息. StringBuffer提供了以下 ...

  10. 《算法》第四章部分程序 part 14

    ▶ 书中第四章部分程序,包括在加上自己补充的代码,两种 Prim 算法求最小生成树 ● 简单 Prim 算法求最小生成树 package package01; import edu.princeton ...