一、面向对象初识

1、结构上 面向对象分成两部分:属性、方法

class A:
name = 'xiaoming' # 静态属性、静态变量、静态字段。 def func1(self): # 函数、动态属性、方法。
pass

2、函数与面向对象

  1,函数封装一个功能,而面向对象封装多个相关的功能。
  2,面向对象比较抽象,它是一种思想,站在上帝的角度去理解它。
  3,面向对象程序可扩展,对象都是一个个独立的。耦合性,差异性。

函数:
def register(argv):
pass def login(argv):
pass def shoppingcar(self):
pass 面向对象:
class Shopping:
def __init__(self): # 特殊方法
pass def register(self):
pass def login(self):
pass def shoppingcar(self):
pass

3、类与对象

类:具有相同属性或者功能的一类实物。
对象:对象是类的具体体现。

二、类名、对象的使用

1、类可以理解为:一个公共框架,一个公共模型

class person:
animal = '高级动物'
walk_way = '直立行走'
language = '语言' def eat(self):
print('小心吃屎你') def play(self):
print('天天就知道玩')

2、类名的使用

1,查看类中的所有属性及方法 __dict__

# __dict__:类调用   -->  返回这个类的所有属性和方法
# __dict__:对象调用 --> 返回这个对象的所有属性

print(person.__dict__)         # 查看类中的所有属性及方法

print(person.__dict__['animal'])    # 通过__dict__方式可以查看单独的属性及方法,但是不能进行增删改

person.__dict__['animal'] = '低级动物'   # 改:报错

person.__dict__['name'] = 'xiaoming'    # 增:报错

del person.__dict__['animal']     # 删:报错

工作中,学习中一般用到 __dict__只是用来查看类中的所有属性及方法,不进行其他操作。

2,查看(增删改)类中某个属性用万能的点 .

print(person.animal)  #查
print(person.language) person.name = 'xiaoming' # 增
print(person.name) person.language = '中文' #改
print(person.language) del person.walk_way #删
print(person.__dict__)

3,操作方法,用类名可以执行方法,但是一般不通过类名操作!!!
person.__dict__['eat'](111)      # 不建议通过__dict__执行方法
person.play(666)

3、对象的使用

class person:

    animal = '高级动物'
walk_way = '直立行走'
language = '语言' def __init__(self,name,age,eye): # 功能:给对象封装属性的。
self.name1 = name
self.age1 = age
self.eye1 = eye def eat(self):
print('小心吃屎你') def play(self):
print('天天就知道玩') obj = person('xiaobai',1000,'小眼睛') # 这个过程是一个实例化过程,他会实例化一个对象(会在内存实例化一个对象空间)。
print(obj) #obj是对象空间的地址
print(obj.name1) # 通过对象查看属性

实例化过程内部进行了三个阶段:
  1,首先遇到 类名() 就会在内存中开辟一个对象空间,只有一个类对象指针(用一个变量接收这个对象空间地址)
  2,然后自动执行类中的__init__方法,并且将对象空间地址自动传给self参数,其他参数手动传入。
  3,最后执行__init__方法 给对象空间封装相应的属性。

对象操作对象空间:

1,对象查看对象空间所有的属性也可用 __dict__
print(obj.__dict__)       # 返回一个包含对象空间所有属性的字典

2,对象操作对象的某个属性(增删改查)用万能的点.
obj.sex = '男'   # 增
print(obj.sex)

del obj.eye1    # 删
print(obj.__dict__)

obj.age1 = 18   # 改
print(obj.age1)

print(obj.name1)     #查
print(obj.__dict__)  #查

3,对象操作类空间的属性:只能查
print(obj.animal) #查

obj.animal = '低级动物'       # 想要这样改类的属性,是改不了的,它会为对象生成一个animal的属性并不会改变类的                                                 animal
print(obj.animal)          # 低级动物
print(person.animal)   # 高级动物

del obj.language       # 删:报错

4,对象操作类空间的方法:对象.方法()
obj.eat()

三、类名称空间,对象名称空间

公用模板,公共框架
class GameRole: rule = '游戏规则' def __init__(self,area,nickname,hp,ad):
self.area = area
self.nickname = nickname
self.hp = hp
self.ad = ad def attack(self):
print('攻击谁') gailun = GameRole('德玛西亚','草丛伦',1000,75) #实例化对象gailun
yasuo = GameRole('艾欧尼亚','托儿所',500,89) #实例化对象yasuo

一张图片解释:

1,对象能调用类中的属性与方法,但是不能修改类的属性和方法
实例化一个对象的时候,会建立对象指向类的指针,gailun.属性名,先从自己空间去找,
没有此属性它会通过类对象指针从类去找,类中找不到,会从父类去找。

gailun.attack = 666  # 这里并不是调用类的attack方法,而是给对象增加一个属性 attack = 666
print(gailun.attack) # gailun.rule = gailun.rule # 相当于gailun.rule = '游戏规则' 对象.属性名='游戏规则'
print(gailun.rule) gailun.nikename = '盖伦' #修改对象的属性
print(gailun.nickname)

2,类能不能调用对象的属性? 不能,因为类没有指向对象的指针
print(GameRole.area)   # 报错

3,对象与对象之间可不可互相调用?
同一个类实例化出来的对象之间是不能互相访问的。
不同类实例化的对象有可能互相访问。

4,给对象封装属性:__init__ 任意位置。

python之面向对象初识的更多相关文章

  1. Python中面向对象初识到进阶

    面向对象初识到进阶 # 面向对象结构: # class 类名: # def __init__(self,参数1,参数2): # self.对象的属性1 = 参数1 # self.对象的属性2 = 参数 ...

  2. 《Python》 面向对象初识

    一.面向对象初识: 1.结构上理解:类由两部分组成 class  A: # class是类的关键字,类名首字母默认大写 name = 'alex' # 静态属性,静态变量,静态字段 def  func ...

  3. 《Python》 面向对象初识(组合)

    一.面向对象(组合): 定义:给一个类的对象封装一个属性,这个属性是另一个类的对象. 意义:让类的对象与另一个类的对象产生关系,类与类之间产生关系. 人物使用武器攻击另一个人物: class Game ...

  4. Python基础-面向对象初识--类

    什么是类 具有相似功能和属性的一类实物 什么是对象 类的具体体现,具体到一个 面向对象的优势 1.类是一组相似功能的集合,使组织结构更加清晰和规范化 2.研究面向对象要有上帝的思维,用面向对象设计程序 ...

  5. python递归 及 面向对象初识及编程思想

    递归 及 面向对象初识及编程思想   一.递归 1.定义: 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. (1)递归就是在过程或函数里调用自身: (2)在使用递 ...

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

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

  7. Python 入门 之 初识面向对象

    Python 入门 之 初识面向对象 1.初识面向对象编程 (核心--对象) (1)观察以下代码: # 面向过程编程 s = "alexdsb" count = 0 for i i ...

  8. Python面向对象01 /面向对象初识、面向对象结构、类、self、实例化对象

    Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 目录 Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 1. 面向对象初识 2. 面向 ...

  9. python 面向对象专题(一):面向对象初识、面向对象结构、类、self、实例化对象

    https://www.cnblogs.com/liubing8/p/11301344.html 目录 Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 1. 面向对象 ...

随机推荐

  1. Chrome opacity非1时border-radius圆角边框剪裁问题

    border-radius:50%可以让元素正方形元素表现为正圆. 如果元素设置了border边框,则会表现为一个正圆圈圈,类似这样: 但有时候,border边框的这个圈圈会在边缘处发生剪裁,个别浏览 ...

  2. 散列表(has table、哈希表)

    一. 散列表是什么 是包含映射关系的一种数据结构,可以提高查找效率. 二. 散列函数 1)必须是一致的.假设输入一个单词“banana”,映射的数字是1,那么以后每次输入banana都要映射到数字1, ...

  3. AV-TEST杀毒软件能力测试(2018年1月-12月)杀毒软件排名

    2018年1月到12月,AV-TEST攻击了实验室中无数的Windows系统,在830多项单独测试中测试了7种杀毒软件和5种快捷工具. 1.测试概述 在长期测试中,实验室在各种实际场景中测试了杀毒软件 ...

  4. openlayer3相关扩展

    1 ol3扩展 http://viglino.github.io/ol-ext/ ,里面包含编辑-选择控件,字体,动画,canvas绘制等等实例 2 ol3空间拓扑关系库jsts,有jst衍生过来 h ...

  5. linux快捷进入长目录的方法

    快捷命令   :alias chaoyang ='cd /usr/lib/uu/hh/lib' 1.将上述设置写到家目录的.bashrc文件中(~/.bashrc) 2.然后source ./bash ...

  6. win7 64 位操作系统,进程System,PID为4,扫描连接局域网ip地址的139和445端口

    偶然发现电脑的System进程不间断扫描连接局域网内的其它IP对应的445和139端口,这是个问题. 上网搜索,立即关闭139端口的监听. 方法如下: 本地连接属性-TCP/IP属性-高级-WINS选 ...

  7. 如何用git上传代码到github详细步骤

    注册账户 这个小菜鸟带着心跳写的第一篇博客! 还请大家多多提点! 想使用github,第一步肯定是要注册github账号,有了账号就是直接登录啦 可以直接打开http://github.com页面注册 ...

  8. httpservlet里单纯分页

    @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletExcep ...

  9. angualr跨域访问配置

    浏览器对于javascript的同源策略的限制,例如a.cn下面的js不能调用b.cn中的js,对象或数据(因为a.cn和b.cn是不同域),所以跨域就出现了: 简单的解释就是相同域名,端口相同,协议 ...

  10. Unix、Windows、Mac OS、Linux系统故事

    我们熟知的操作系统大概都是windows系列,近年来Apple的成功,让MacOS也逐渐走进普通用户.在服务器领域,恐怕Linux是无人不知无人不晓.他们都是操作系统,也在自己的领域里独领风骚.这都还 ...