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

  • 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. bzoj5178 [Jsoi2011]棒棒糖 主席树+线段树二分

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5178 https://lydsy.com/JudgeOnline/problem.php?id ...

  2. AJAX——理解XMLHttpRequest对象

    AJAX大家已经都知道了,XMLHttpRequest对象则是AJAX的核心.这篇博客重点总结一下这个对象的使用. XMLHttpRequest对象的属性和方法: 属性 说明 readyState 表 ...

  3. Android Release 打包提示 "错误:找不到符号"

    搞了一上午....必须记录下来

  4. 对calc()的研究

    1.calc是英文单词calculate(计算)的缩写,是css3的一个新增的功能,用来指定元素的长度 calc()最大的好处就是用在流体布局上 2.calc()使用通用的数学运算规则 使用“+”.“ ...

  5. LeetCode--040--组合总和 II(java)

    给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字在每个组合中只能使用一次. ...

  6. python的可视化展示(待更新)

    参考:https://www.cnblogs.com/zhizhan/p/5615947.html 通过matplotlib进行绘图: 例1: import matplotlib.pyplot as ...

  7. JavaScript中数组的操作方法总汇

    Array(数组)是JavaScript中最为常用的类型了.ECMAScript中的数组都是数据的有序列表.数组中可以保存任何类型的数据.数组的大小是可以动态调整的,既可以随着数据的添加自动增长以容纳 ...

  8. 【转】Django-template模板语言

    Django-template模板语言 转自:https://www.cnblogs.com/zzy-9318/p/8672945.html 一.常用语法 只需要记两种特殊符号: {{  }}和 {% ...

  9. drawRect

    1) 画笔设置 Paint.Style.STROKE 中空模式 paint = new Paint(); //新建一个画笔对象 paint.setAntiAlias(true);//抗锯齿功能 pai ...

  10. 2017年度最具商业价值人工智能公司TOP50 榜单发布

    2017年度最具商业价值人工智能公司TOP50 榜单发布 未来最有赚钱潜力的50个人工智能项目都在这里了. 经过了60年的发展,人工智能在2017年,正式走向应用的元年. 从今年起,人工智能首次被写入 ...