python中面向对象空间时间_python基础学习Day15 面向对象、类名称空间、对象名称空间 (2)...

一、类

先看一段代码:

classPerson:

animal= '高级动物'walk_way= '直立行走' # 静态属性,静态变量,静态字段language= '语言'

def __init__(self,name,age,work): # 函数 动态属性,方法#print(self)

self.name =name

self.age=age

self.work=workdefeat(self):print('吃吃')defwork(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) # 可以操作函数

二、对象

先看代码:

classPerson:

animal= '高级动物'walk_way= '直立行走'language= '语言'

def __init__(self,name,age,work):#print(self)

self.name =name

self.age=age

self.work=workdefeat(self):print('吃吃')defwork(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__)delobj.workprint(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)    # 查

类执行的过程图

三、组合

先看代码:

classGamerole:def __init__(self,nickname,ad,hp):

self.nickname=nickname

self.ad=ad

self.hp=hpdef equip_weapon(self, w): #给人物封装了一个武器属性,这个属性值是Weapon的一个对象

self.equip_weapon = w #组合

classWeapon:def __init__(self,name,ad):

self.name=name

self.ad=addeffight(self,role1,role2): # 此时的self为武器的内存地址

role2.hp= role2.hp -self.ad - role1.ad # 此时 role1、role2分别为p1、p2print('%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血

插入解释图片:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值