面向对象是一种编程方式, 主要集中在类和对象的两个概念

  • python 中的类符合封装, 继承, 多态的特征
  • 类 是一个模板, 是n多函数的集成
  • 对象 是类的实例化

类的成员分为三大类:字段、方法、属性

  

字段

字段包括静态字段和普通字段,静态字段只在内存中保存一份, 普通字段在每个对象中都要保存一份(值可不同)

  • 普通字段属于对象, 实例化对象时普通字段存在于对象的内存中
  • 静态字段属于类, 实例化对象之后不存在与对象的内存中

应用场景:如果类的多个对象需要使用相同的属性值则应定义为静态字段。

class Animal:

    #静态字段
name = '大象‘ def __init__(self, name)
#普通字段
self.name = name
# 访问普通字段
obj = Animal('小猴子‘).name #访问静态字段
Animal.name

方法

方法: 普通方法, 静态方法, 类方法。三种方法在内存中都归属于类, 区别在于调用方式不同

  • 普通方法:由对象调用;至少一个self参数;执行普通方法时将自动调用该方法的对象赋值给self。

    •   调用过程  实例化对象-->对象调用类中的普通方法-->执行普通方法时,自动调用该方法的对象赋值给self(self获取对象的普通字段属性)-->执行方法内部逻辑
  • 类方法:由类调用;至少一个cls参数;执行类方法时, 自动调用该方法的类赋值给cls
  • 静态方法:静态方法由类调用;无默认参数
class Foo:

    def __init__(self, name):
self.name = name def ord_func(self):
""" 定义普通方法,至少有一个self参数 """ # print self.name
print '普通方法' @classmethod
def class_func(cls):
""" 定义类方法,至少有一个cls参数 """ print '类方法' @staticmethod
def static_func():
""" 定义静态方法 ,无默认参数""" print '静态方法' # 调用普通方法
f = Foo()
f.ord_func() # 调用类方法
Foo.class_func() # 调用静态方法
Foo.static_func()

三种方法相同点:所有方法均属于类中(非对象),所以在内存中值保存一份

    不同点:方法调用者不同、调用方法时自动传入的参数不同。

属性

属性其实是普通方法的变种

  • 定义时, 在普通方法的基础上添加@property装饰器
  • 定义时,属性仅有一个self参数(新式类可以有多个)
  • 调用时, 无需括号

      方法:foo_obj.func()

      属性:foo_obj.prop

访问属性可以制造出和访问字段相同的假象, 属性由方法变种而来;属性的功能是在属性内部进行一系列逻辑运算,最终返回结果。

属性由两种定义方式:装饰器、静态字段(在类中定义值为property对象的静态字段)

本文作为学习笔记进行记录,学习大牛blog, 为大牛点赞, 更为详尽内容请移步一下链接

http://www.cnblogs.com/wupeiqi/p/4766801.html

python 面向对象(类)--学习笔记的更多相关文章

  1. python网络爬虫学习笔记

    python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章文件夹 1. 介绍: 2. 从简单语句中開始: 3. 传送数据给server 4. HTTP头-描写叙述 ...

  2. Python Built-in Function 学习笔记

    Python Built-in Function 学习笔记 1. 匿名函数 1.1 什么是匿名函数 python允许使用lambda来创建一个匿名函数,匿名是因为他不需要以标准的方式来声明,比如def ...

  3. Requests:Python HTTP Module学习笔记(一)(转)

    Requests:Python HTTP Module学习笔记(一) 在学习用python写爬虫的时候用到了Requests这个Http网络库,这个库简单好用并且功能强大,完全可以代替python的标 ...

  4. System类学习笔记

    最近在学习源码的过程中发现:很多深层次的代码都用到了一个类System类,所以决定对System类一探究竟 本文先对System类进行了剖析,然后对System类做了总结 一.首先对该类的中的所有字段 ...

  5. zt C++ list 类学习笔记

    C++ list 类学习笔记 分类: C++ 2011-09-29 00:12 7819人阅读 评论(0) 收藏 举报 listc++iteratorvectorcconstructor 双向循环链表 ...

  6. Python基础班学习笔记

    本博客采用思维导图式笔记,所有思维导图均为本人亲手所画.因为本人也是初次学习Python语言所以有些知识点可能不太全. 基础班第一天学习笔记:链接 基础班第二天学习笔记:链接 基础班第三天学习笔记:链 ...

  7. 《简明python教程》学习笔记,长文

    引号: 单引号:如果包含的字符串里有单引号的话,需要在那个单引号里加转义符号,或者使用双引号 例:print 'he"llo' or print 'he\'llo'    ===> h ...

  8. python网络爬虫学习笔记(二)BeautifulSoup库

    Beautiful Soup库也称为beautiful4库.bs4库,它可用于解析HTML/XML,并将所有文件.字符串转换为'utf-8'编码.HTML/XML文档是与“标签树一一对应的.具体地说, ...

  9. python面向对象(类和对象及三大特性)

    类和对象是什么 创建类 新式类 和 经典类 面向对象三大特性 继承 封装 多态   面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

  10. python面向对象编程学习

    python面向对象编程 基本概念理解 面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作 ...

随机推荐

  1. random模块 os模块

    # random# import random# random.random() # 大于0且小于1之间的小数# random.randint() # 大于等于1且小于等于3之间的整数# random ...

  2. 英语单词Obsolete

    Obsolete 来源——命令帮助 [root@centos73 ~]# help typeset typeset: typeset [-aAfFgilrtux] [-p] name[=value] ...

  3. linux-Centos 7下bond与vlan技术的结合[推荐]

    https://blog.51cto.com/sf1314/2073519 服务器eth0与eth1作bonding,捆绑成bond0接口,服务器对端交换机端口,同属于100.101号vlan接口 v ...

  4. 在浏览器地址栏中查看cookie

    在IE地址栏中输入javascript:alert(document.cookie) 或者地址栏直接打javascript:document.write(document.cookie);

  5. html from表单异步处理

    from表单异步处理. 简单处理方法: jQuery做异步提交表单处理, 通过$("#form").serialize()将表单元素的数据转化为字符串, 最后通过$.ajax()执 ...

  6. womenzijide_jiafenxiang

    <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Conten ...

  7. openlayers筛选图层

    很多时候需要筛选图层,例如选择交互(ol.interaction.Select). 图片来自官方:https://openlayers.org/en/v4.6.5/apidoc/ol.interact ...

  8. 安装依赖的时候,报错npm WARN checkPermissions

    解决办法1 . 删除node_modules文件夹,重新安装依赖. 解决办法2 . 统一使用同一个npm安装依赖 . 原因:有的依赖包是用npm安装的,有的依赖包是用cnpm安装的.

  9. 前端工具-调试压缩后的JS(Source Map的使用)

    使用 Source Map 可以在 FF 的调试器. Chrome 的 Sources 和 VSCode 中给压缩前的文件下断点,也可以方便定位错误发生的位置(定位到压缩前的文件). 何为 Sourc ...

  10. day40—JavaScript多物体运动框架

    转行学开发,代码100天——2018-04-25 今天继续学习JavaScript的运动实现——多物体运动框架的介绍及其应用. 首先来看一个简单的例子.如下图,要使图中3个红色盒子实现鼠标移入变宽,移 ...