今天开始写关于面向对象的内容,面向对象是编程思想中一大思想,由于日常使用中经常会用到,本次主要是对于我个人认为重点的基础知识进行整理,不会特别详细的书写。

1.面向过程与面向对象的区别

2.类

3.类的属性以及操作方式

4.对象

5.对象的属性以及操作方法

6.类的名称空间以及对象空间

开始今日份整理

1.面向过程与面向对象的区别

  1.1面向过程:核心是过程二字,过程指的是解决问题的步骤,设定一条流水线,机械式的思考问题

  • 优点:复杂的问题流程化,进而简单化
  • 缺点:可扩展性差
  • 应用换将:应用内容变化较少,流程化作业较多,例如数据分析等

  1.2面向对象:核心是对象二字,对象的特征就是特征与技能的结合体

  • 优点:可扩展性强,
  • 缺点:编程复杂度高
  • 应用环境:用户需求经常变动,互联网应用,游戏,企业内部应用

2.类

  2.1类的定义:一系列对象相似的技能和技能的结合体;强调:站在不同的角度,得到的分类是不一致的;对象是类的具体表现

  现实中类与对象

  猫,是一类,你家的大橘是一个具体的对象

  狗,是一类,你家的大黄是一个具体的对象

  男神,是一类,你最喜欢的老公是一个具体的对象

  在现实中,先有对象,才会找到共同的特征,归为一类

  在编程中,先有类,才会根据类创建对象,刚好相反

  2.2类的结构

##########

class 类名()#类名要首字母大写

变量

函数(方法)

##########

3.类的属性以及操作方式

类的属性主要分俩种

  • 静态属性:类内部定义的变量称之为数据属性
  • 动态属性:类内部定义的函数称之为函数属性

静态属性的查询

    # 第一种,类名.__dict__方式:查看类中所有内容时用。
# 查:
print(Human.__dict__)
print(Human.__dict__['mind'])
Human.__dict__['mind'] = '无脑'
print(Human.__dict__)
# 第二种 万能的. 可以增删改查类中的静态属性。
print(Human.mind) # 查
Human.mind = '无脑' # 改
print(Human.mind)
del Human.mind # 删
Human.walk = '直立行走'
print(Human.walk)

类内方法的调用

# 类名操作类中的方法(除去特殊方法:静态方法,类方法之外,一般不会通过类名执行类中的方法)。
# 类名.方法名(参数)
Human.work()
Human.tools()
#下面可以做,但不用。
Human.__dict__['work']()

4.对象

  4.1对象的定义:对象是特征与技能的结合体,只要类名加()就可以生成一个对象

  4.2实例化一个对象的过程

  • 执行类中自己的__new__方法,产生一个空的对象空间
  • 自动执行类中的__init__方法并且将这个空的对象空间传给self
  • 在__init__中通过self给这个空间添加属性

5.对象的属性以及操作方法

对象操作对象空间中的属性

obj = Human('小胖','男',,'女')
#,obj.__dict__ 查询对象中所有的属性
print(obj.__dict__)
#, 通过万能的.的方式操作对象中的单个属性。
obj.job = 'IT' # 增
del obj.n # 删
obj.s = '女' # 改
print(obj.s)
print(obj.__dict__)
# ,对象可以查询类中的属性。
print(obj.mind)
print(obj.language)
obj.a =
print(obj.a)
# ,对象可以执行类中的方法。
# 对象执行类中的所有方法(除去3个特殊方法)Python解释器都会将对象空间主动传给方法的第一个参数self、
print(obj)
obj.work()

类中的方法的第一个参数约定俗成写self,便于统一,生成多个对象只需要多次调用类名加()加属性就可以生成

6.类的名称空间以及对象空间

class Gamerole(object):

    name = 'LOL'
year =
def __init__(self,name,ad,hp):
self.name = name
self.ad = ad
self.hp = hp
def attack(self,p1):
# Gamerole.area = '德玛西亚'
p1.hp -= self.ad
print('%s攻击%s,%s掉了%s血,还剩%s血'
%(self.name,p1.name,p1.name,self.ad,p1.hp)) # gailun = Gamerole('草丛伦',,)
# gailun.armor =
# print(gailun.__dict__)
# 对象的属性:不仅在__init__里面添加,还可以在其他方法或者类外面添加。
# yasuo = Gamerole('托儿所',,)
# yasuo.attack(gailun)
# 类的属性:不仅在类内部可以添加,还可以在类外部添加。
# Gamerole.year =
# print(Gamerole.__dict__)
gailun = Gamerole('草丛伦',,)
timo = Gamerole('提莫',,)
print(gailun.name)
print(gailun.year)
# 对象空间中存在一个类对象指针,所以对象可以找到类中的变量以及方法
# 类名只能找到类中的变量,方法,或者(父类中的),不能找对象中的属性。

类中的函数属性:是绑定对象,绑定不同的对象是不同的绑定方法,对象调用绑定方法时,会把对象本身当做第一个参数传给   self,类中的函数是给对象来使用,谁来谁使用。如果类访问自己的属性时,会先从自己的名称空间访问,没有则会去自己的父类去查找,如果没有则不会从全局变量中查找,只会在类的空间中查找。

day14- 面向对象基础(一)的更多相关文章

  1. 了解JavaScript 面向对象基础 & 原型与对象

    面向对象语言中的对象 老是能听到什么基于对象, 面向对象. 什么是对象, 如果有面向对象基础的人可以无视了, 下面举个简单的例子给大家讲讲面向对象中, 对象的定义, 这个是比较通用的, 不过对于JS来 ...

  2. MYSQL、PHP基础、面向对象基础简单复习总结

    一.MYSQL         1.配置MySql                 第一步安装服务器(apache).                 第二部安装MySql界面程序         2 ...

  3. 从零开始学Python第六周:面向对象基础(需修改)

    标签(空格分隔): 面向对象 一,面向对象基础 (1)面向对象概述 面向过程:根据业务逻辑从上到下写代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类 ...

  4. python面向对象基础

    面向对象基础 1. 简述 编程方式: 面向过程: 根据代码在脚本的堆叠顺序,从上到下依次执行 函数式编程:将相同功能的代码封装到函数中,直接调用即可,减少代码重复性 面向对象:对函数进行分类和封装,将 ...

  5. java基础学习05(面向对象基础02)

    面向对象基础02 实现的目标 1.String类的使用2.掌握this关键字的使用3.掌握static关键字的使用4.了解内部类 String类 实例化String对象一个字符串就是一个String类 ...

  6. java基础学习05(面向对象基础01--类实例分析)

    面向对象基础01(类实例分析) 实现的目标 1.如何分析一个类(类的基本分析思路) 分析的思路 1.根据要求写出类所包含的属性2.所有的属性都必须进行封装(private)3.封装之后的属性通过set ...

  7. java基础学习05(面向对象基础01)

    面向对象基础01 1.理解面向对象的概念 2.掌握类与对象的概念3.掌握类的封装性4.掌握类构造方法的使用 实现的目标 1.类与对象的关系.定义.使用 2.对象的创建格式,可以创建多个对象3.对象的内 ...

  8. 8.python笔记之面向对象基础

    title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...

  9. 【重走Android之路】【Java面向对象基础(三)】面向对象思想

    [重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想   1 面向对象的WWH   1.1 What--什么是面向对象         首先,要理解“对象”.在Thinkin ...

  10. 【重走Android之路】【Java面向对象基础(二)】细说String、StringBuffer和StringBuilder

    [重走Android之路][基础篇(二)][Java面向对象基础]细说String.StringBuffer和StringBuilder   1.String String是Java中的一个final ...

随机推荐

  1. String str=null; 和String str=""的区别

    1.最大的区别在于String str=null没有分配内存,String str=""分配了内存 2.String str=null   这个引用指向了一个null ,没有地址没 ...

  2. 通过Python、BeautifulSoup爬取Gitee热门开源项目

    一.安装 1.通过requests 对响应内容进行处理,requests.get()方法会返回一个Response对象 pip install requests 2.beautifulSoup对网页解 ...

  3. 如何正确使用Java泛型

    前言 Java 1.5之前是没有泛型的,以前从集合中读取每个对象都必须先进行转换,如果不小心存入集合中对象类型是错的,运行过程中转换处理会报错.有了泛型之后编译器会自动帮助转换,使程序更加安全,但是要 ...

  4. [Go] 使用go语言解决现代编程难题

    1.计算机一直在演化,64核,128核等等,但是我们依旧在使用为单核设计的技术编程2.Go语言让分享自己的代码包更容易3.Go语言重新思考传统的面向对象,提供了更高效的复用代码手段4.Go不仅提供高性 ...

  5. 【转】Android 开发规范(完结版)

    摘要 1 前言 2 AS 规范 3 命名规范 4 代码样式规范 5 资源文件规范 6 版本统一规范 7 第三方库规范 8 注释规范 9 测试规范 10 其他的一些规范 1 前言 为了有利于项目维护.增 ...

  6. 折腾Java设计模式之策略模式

    博客原文地址 简介 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改.这种类型的设计模式属于行为型模式.简单理解就是一组算法,可以互换,再简单点策略就是封装算法. ...

  7. WEB前端常见面试题汇总:(一)

    1.JS找字符串中出现最多的字符 例如:求字符串'nininihaoa'中出现次数最多字符 方法一: var str = "nininihaoa"; var o = {}; for ...

  8. arcgis api 3.x for js 入门开发系列八聚合效果(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  9. [ArcGIS API for JavaScript 4.8] Sample Code-Get Started-widgets简介

    [官方文档:https://developers.arcgis.com/javascript/latest/sample-code/intro-widgets/index.html] 一.Intro ...

  10. 从.Net到Java学习第五篇——Spring Boot &&Profile &&Swagger2

    从.Net到Java学习系列目录 刚学java不久,我有个疑问,为何用到的各种java开源jar包许多都是阿里巴巴的开源项目,为何几乎很少见百度和腾讯?不是说好的BAT吗? Spring Boot 的 ...