day10_python学习笔记_chapter13_面向对象编程
1. class NewClass(parent):
def .... 如果没有父类, 则默认继承object类
2. 类属性访问(类似java中的静态属性和方法)直接用类名.属性名, 在python中, 如果没有创建实例, 方法不能被调用。方法必须绑定到一个实例才能直接被调用。
class C(object):
foo = 100 访问 C.foo
3. 特殊的类属性: C.__name__, C.__doc__ , C.__bases__, C.__dict__ , C.__module__, C.__class__
4. 在定义方法时,会传入一个self参数, 这个参数代表实例对象本身, 当用实例调用方法时,由解释器传递给方法。
def func(self, arg1, arg2...)
5. __init__, __new__, __del__
6. 如果定义了构造器,则它不能返回任何对象, 只能返回None
7. 类属性vs实例属性: 类属性可以通过类名.属性名访问, 也可以通过实例.属性名来访问, 类属性只能通过类引用才能更新属性值, 不能通过实例名来更新
eg: class C(object):
m = 1
c = C()
c.m = 2 并不能更改类属性的值。只是创建了一个新的实例属性。 此时c.m = 2
del c.m 此时c.m = 1
给一个与类属性同名的实例属性赋值会有效地隐藏类属性,但当删除了这个实例属性时,实例又可以重新访问到类属性。
8. 当在类属性可变的情况下,与上面7的情况就不同了。
eg: class D(object):
dict1 = {2003: 'aaa'}
d = D()
d.dict1 = {2003: 'aaa'}
d.dict1[2004] = 'bbb'
此时d.dict1 = {2003: 'aaa', 2004: 'bbb'} 对于类属性可变的情况下(字典,列表),实例可以修改类属性。
9. 绑定:方法必须绑定到实例,才能够被调用。
10. 静态方法和类方法, staticmethod(func), classmethod(func),也可以通过函数修饰符,@staticmethod, @classmethod
>>> class STM:
def foo():
@staticmethod
print 'static ....'
foo = staticmethod(foo)
>>> class CM:
@classmethod
def foo(cls):
print 'class ...'
foo = classmethod(foo)
11. 继承, __bases__属性,查看父类,
子类覆盖了父类中的方法后,再访问父类的原有方法: Parent.func(子类实例)
eg: Class P(object):
def foo(self):
print 'parent... '
class C(P):
def foo(self):
print 'child...'
c = C()
P.foo(c) =====parent...
或者在子类中显示调用基类的方法
class C(P):
def foo(self):
P.foo(self)
print 'child...'
在子类为绑定时, 一个更好的方法是使用super()内建方法
class C(P):
def foo(self):
super(C, self).foo()
print 'child...'
12. 重写__init__不会自动调用父类的__init__的方法,与java不同
13. 类,实例常用的内建函数, issubclass(sub, sup), isinstance(obj1, obj2), hasattr(), getattr(), setattr(), delattr(), dir(), super(), vars == __dict__
day10_python学习笔记_chapter13_面向对象编程的更多相关文章
- javascript 学习笔记之面向对象编程(一):类的实现
~~想是一回事,做是一回事,写出来又是一回事~~一直以来,从事C++更多的是VC++多一些,从面向过程到面向对象的转变,让我对OO的编程思想有些偏爱,将一个客观存在的规律抽象出来总是让人比较兴奋,通过 ...
- JavaSE学习笔记05面向对象编程01
面向对象编程01 java的核心思想就是OOP 面向过程&面向对象 面向过程思想: 步骤清晰简单,第一步做什么,第二步做什么...... 面向过程适合处理一些较为简单的问题 面向对象思想: 物 ...
- python 学习笔记7 面向对象编程
一.概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强..." ...
- C++ Primer 学习笔记_67_面向对象编程 --转换与继承、复制控制与继承
面向对象编程 --转换与继承.复制控制与继承 I.转换与继承 引言: 由于每一个派生类对象都包括一个基类部分,因此能够像使用基类对象一样在派生类对象上执行操作. 对于指针/引用,能够将派生类对象的指针 ...
- javascript 学习笔记之面向对象编程(二):继承&多态
~~接上篇~~上一篇实现了类的实现以及类成员变量和方法的定义,下面我们来了解下面向对象中两个最重要的特性:继承和多态. 继承 js中同样可以实现类的继承这一面向对象特性,继承父类中的所有成员(变量和属 ...
- C++ Primer 学习笔记_69_面向对象编程 --继承情况下的类作用域
面向对象编程 --继承情况下的类作用域 引言: 在继承情况下,派生类的作用域嵌套在基类作用域中:假设不能在派生类作用域中确定名字,就在外围基类作用域中查找该名字的定义. 正是这样的类作用域的层次嵌套使 ...
- Spark学习笔记11面向对象编程
面向对象编程 11.1 object类 11.1.1定义一个简单的类 11.1.2 field的getter与setter 定义类包含,定义类的field及方法.其格式如下 class Cla ...
- C++ Primer 学习笔记_72_面向对象编程 --句柄类与继承[续]
面向对象编程 --句柄类与继承[续] 三.句柄的使用 使用Sales_item对象能够更easy地编写书店应用程序.代码将不必管理Item_base对象的指针,但仍然能够获得通过Sales_item对 ...
- python学习笔记(七):面向对象编程、类
一.面向对象编程 面向对象--Object Oriented Programming,简称oop,是一种程序设计思想.在说面向对象之前,先说一下什么是编程范式,编程范式你按照什么方式来去编程,去实现一 ...
随机推荐
- 密码算法详解——DES
0 DES简介 在20世纪60年代后期,IBM公司成立了一个由Horst Feistel负责的计算机密码学研究项目.1971年设计出密码算法LUCIFER后,该项目宣告结束.LUCIFER被卖给了伦敦 ...
- C#编程打字指法练习
很惊讶昨晚写的第一篇学习笔记竟然有个评论了,只是今天还是对基础知识提不起精神,还是先看那三本书了解一下程序开发的大概流程吧. 今天不知道怎么闲逛就找到了这个网站,说是专门用于编程练习的,用google ...
- 何使用CSS写出一个下拉菜单。
导航菜单是每个网站所必备的功能,也是每个学习制作网站的朋友所必须接触的,如何用css样式制作一个简单漂亮的二级下拉菜单呢? 下面为大家分享一下我的经验 方法步骤: 第一步 : 首页我们打开Subli ...
- UVA 10603 Fill
题意: 题目的意思是倒水,给出的四个数据是第一个水杯,第二个水杯,第三个水杯,和目标水量.一开始只有第三个水杯是满的,剩下的水杯是空的.倒水的时候只能把倒水出来的这个杯子倒空,或是倒水进去的杯子倒满. ...
- 怎么使用dreamweaver制作网页教程 dw建站设计网页
对于网页制作相关专业人士一定对dreamweaver有所认识,下面小编就问大家总结一下相关网页制作的一些步骤,喜欢的朋友可以一起来学习一下 Dreamweaver这一款专业的网页制作软件,相信相关 ...
- java中,Date数据类型和JSONObject数据类型之间的转换
import java.text.SimpleDateFormat;import java.util.Date;import net.sf.json.JSONObject; public class ...
- linux 系统中的特殊文件
特殊文件是UNIX系统中最具特色的文件特性之一.特殊文件也称设备文件.提供用户访问外部设备,而不必知道各种设备的具体操作.UNIX利用特殊文件作为用户与设备文件的接口,使用户能像访问普通文件那样访问特 ...
- CreateMutex() 、ReleaseMutex()
功能: CreateMutex() 用于有独占要求的程序 (在其进程运行期间不允许其他使用此端口设备的程序运行,或不允许同名程序运行). 比如运行金山词霸时,一次只能运行一个实例,当运行第二个实例时, ...
- Ecside基于数据库的过滤、分页、排序
首先ecside展现列表.排序.过滤(该三种操作以下简称为 RSF )的实现原理完全和原版EC一样, 如果您对原版EC的retrieveRowsCallback.sortRowsCallback.fi ...
- 常用在线工具及API网址总结
1.小图标在线查找 https://www.iconfinder.com/ 2.在线做图,Flowchart流程图,BPMN图,Org组织结构图等 http://www.processon.com/ ...