一、类

先看一段代码:

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血

插入解释图片:

												

最新文章

  1. C# OOP 重要部分全解
  2. About SQLite
  3. 如何正确建立MYSQL数据库索引
  4. ASP.NET MVC系列:添加模型
  5. net-snmp的MIBs扩展(linux下)
  6. ssh框架开发问题
  7. BZOJ4196 软件包管理器
  8. Android百度地图
  9. 如何使用ERStudio 生成comment
  10. Google浏览器的缓存文件过大(mega网站导致的)
  11. C语言实现修改文本文件中的特定行
  12. EntityFramework6.X之概述
  13. [编织消息框架][消息服务]rmi
  14. Go学习——go+channel实战(转)
  15. 大白话5分钟带你走进人工智能-第三节最大似然推导mse损失函数(深度解析最小二乘来源)(1)
  16. 自定义Spark Partitioner提升es-hadoop Bulk效率——续
  17. MySQL实例crash的案例分析
  18. 江苏公务员职位表导入MySQL
  19. appium启动sdk的android模拟器
  20. Intellij IDEA 设置代码着色

热门文章

  1. SQL SERVER 数据压缩
  2. CF603EPastoral Oddities
  3. angularjs的cache
  4. java 模拟浏览器发送post请求
  5. 【Selenium-WebDriver自学】Selenium测试设计技术(十三)
  6. linux的系统调优
  7. [转]C# 安装与部署
  8. 字符串格式化+json解析
  9. 代码:CSS仿制 苹果按钮图标
  10. django之signal机制分析