- 浏览: 227521 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
thebye85:
引用 另外一个需要注意的问题,就是SessionMap和隐藏对 ...
WebWork深度探索之Session -
lanxiaoshuang:
写的真好
说的都是概念——有关编程范式 -
lhz:
grep unique wc你需要的只是这么几个小工具而已
努力做个Pragmatic Programmer
使用Python编程有一段时间了,但是Python并不是我最常用的编程语言,更重要的是Python与诸如Java、C#这类典型的OO语言在很多方面存在着差异。因此我那糟糕的记忆力总让我在编写Python程序的时候,不得不搜肠刮肚,挖空心思。俗话说得好:好记性不如烂笔头。因此,还是为我如漏斗般的记忆开个备忘录吧!
Part 1 与OO概念相关
1、如何构造类实例?
A:在Java和C#中,构造类实例都需要使用关键字new加上构造函数的形式。而在Python中,则不需要使用new关键字,直接使用构造函数即可;
2、如何定义构造函数?
A:记住啦,与类名相同的函数并不是构造函数哦!在Python中,有一个特别的函数__init__承担着构造函数的重任。如下所示:
>>> class Clazz:
def __init__(self):
self.a = 2
>>> clazz = Clazz()
>>> clazz.a
2
def __init__(self):
self.a = 2
>>> clazz = Clazz()
>>> clazz.a
2
3、如何实现类继承?
A:在Python中,继承的语法如下:class DerivedClass(BaseClass1, BaseClass2...)。从中你可以发现,Python是支持多重继承的。
4、如何实现访问控制?
A:事实上,Python中的类机制对于访问控制并没有过多的约束,类中的所有成员方法及所有数据成员都是public的。如果你真的希望某个方法或是某个变量不被类外部访问的话,只能通过替代的方法去实现访问控制,而且实现的访问控制仅限于形式上的,因为这个替代的方法只是改变定义的方法名和变量名而已。如下所示:
>>> class A:
__a = 2
def __sayHi(self):
print "Hi!"
>>> a = A()
>>> dir(a)
['_A__a', '_A__sayHi', '__doc__', '__module__']
__a = 2
def __sayHi(self):
print "Hi!"
>>> a = A()
>>> dir(a)
['_A__a', '_A__sayHi', '__doc__', '__module__']
5、self参数的含义是什么?
A:以上的两个实例代码中都出现了self参数,聪明的你联想一下就应该能够知道它的含义了。是的,就跟我们常用的this的含义是一样的。通常类实例的方法(你可以认为是非static的)都要包含self这个参数,否则你无法引用属于类的变量及方法;
6、如何定义static的方法?
A:定义static的方法很简单,不过要比在Java和C#中实现要复杂一些,因为它是通过利用staticmehod(function)的重定义实现,而非关键字。如下所示:
>>> class Clazz:
def methodA():
print "Hello, World."
methodA = staticmethod(methodA)
>>> Clazz.methodA()
Hello, World.
>>> clazz = Clazz()
>>> clazz.methodA()
Hello, World.
Error Definition 1:
>>> class Clazz:
def methodA(self):
print "Hello, World."
methodA = staticmethod(methodA)
>>> Clazz.methodA()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: methodA() takes exactly 1 argument (0 given)
>>> clazz = Clazz()
>>> clazz.methodA()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: methodA() takes exactly 1 argument (0 given)
Error Definition 2:
>>> class Clazz:
def methodA():
print "Hello, World."
>>> Clazz.methodA()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: unbound method methodA() must be called with Clazz instance as first argument (got nothin
g instead)
>>> clazz = Clazz()
>>> clazz.methodA()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: methodA() takes no arguments (1 given)
Instance Method Definition:
>>> class Clazz:
def methodA(self):
print "Hello, World."
>>> Clazz.methodA()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: unbound method methodA() must be called with Clazz instance as first argument (got nothing instead)
>>> clazz = Clazz()
>>> clazz.methodA()
Hello, World.
def methodA():
print "Hello, World."
methodA = staticmethod(methodA)
>>> Clazz.methodA()
Hello, World.
>>> clazz = Clazz()
>>> clazz.methodA()
Hello, World.
Error Definition 1:
>>> class Clazz:
def methodA(self):
print "Hello, World."
methodA = staticmethod(methodA)
>>> Clazz.methodA()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: methodA() takes exactly 1 argument (0 given)
>>> clazz = Clazz()
>>> clazz.methodA()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: methodA() takes exactly 1 argument (0 given)
Error Definition 2:
>>> class Clazz:
def methodA():
print "Hello, World."
>>> Clazz.methodA()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: unbound method methodA() must be called with Clazz instance as first argument (got nothin
g instead)
>>> clazz = Clazz()
>>> clazz.methodA()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: methodA() takes no arguments (1 given)
Instance Method Definition:
>>> class Clazz:
def methodA(self):
print "Hello, World."
>>> Clazz.methodA()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: unbound method methodA() must be called with Clazz instance as first argument (got nothing instead)
>>> clazz = Clazz()
>>> clazz.methodA()
Hello, World.
以上给出了有关static方法的多种定义,只有第一种真正能够满足static方法的要求。
发表评论
-
在String的面前丢脸
2004-06-18 00:39 1265重返C++的世 ... -
Summary of function parameter
2004-07-14 02:33 1141对C++这位入 ... -
此Vector非彼Vector
2004-08-05 15:51 1046在学习STL的过程中,我发现了一个熟悉的面孔— ... -
模板——泛型和STL的基础
2004-08-07 01:01 1327所谓泛型,从字面上可以猜想,就是泛化的类型(型 ... -
让人头痛的Vector(提问篇)
2004-08-07 16:55 1230在写完了此Vector非彼Vector这篇随笔 ... -
我该怎样shuffle呢
2004-08-10 01:47 1183在STL的Algorithm中有着这样的一种算 ... -
WebWork初体验
2004-08-11 17:43 1291在这篇ASP.NET ... -
WebWork深度探索之盲人摸象
2004-08-12 23:54 1132昨天尝试着利用WebWork做了一个小功能[1 ... -
WebWork深度探索之号外
2004-08-14 09:03 1041昨天开始对WebWork进行了一些初步的探索[ ... -
WebWork深度探索之标签库
2004-08-15 00:28 1531由于WebWork本身提供了一套自定义的标签库 ... -
什么是Law of Demeter
2004-08-15 14:22 1235今天一如昨日,继续对WebWork进行小打小闹 ... -
所谓的Dumb Question
2004-08-15 17:16 1035为了能够更 ... -
WebWork深度探索之标签库(续)
2004-08-16 15:58 1129昨日对WebWork的标签库进行了小小的研究[ ... -
WebWork深入探索之初见端倪
2004-08-19 16:35 905使用WebWork进 ... -
建网站的小Tips
2004-08-20 23:58 1035这几天都在忙着做一个小网站,从网页美工到后台处 ... -
URL与RequestDispatcher
2004-08-21 23:58 1004今天照例继续自己的网站建设之旅,原本以为可以大 ... -
WebWork深度探索之Pitfall
2004-08-25 14:31 967在使用WebWork进行开发的过程中,她的种种 ... -
WebWork深度探索之Session
2004-08-26 15:38 1523昨天上午刚 ... -
搞笑的textarea标签
2004-08-31 18:17 1583很久没有用 ... -
两天四疑问
2004-09-03 10:56 9949月份的前两天,我仍然做着网站开发的工作。在开 ...
相关推荐
《终极Python备忘录》是一份综合性的Python编程学习资源,包含了从基础语法到高级技巧的全面概述。这个压缩包包含了一系列PDF文档,旨在帮助Python初学者和有经验的开发者快速查阅关键概念和API,提升编程效率。以下...
这个仓库,"Python-这个仓库是为数据科学量身定制的Python备忘录列表",特别聚焦于NumPy,这是Python科学计算的核心库。 NumPy(Numerical Python)是Python中的一个基础包,用于处理大型多维数组和矩阵。其核心...
本篇将详细讲解如何使用Tkinter来实现一个简单的备忘录应用,涵盖增、删、改、查的基本功能。 首先,我们需要导入Tkinter库,并初始化窗口。在Python中,可以这样引入Tkinter库: ```python import tkinter as tk ...
备忘录类可以是简单数据结构,如C++中的结构体或Python中的类,也可以是复杂的数据结构。它只存储必要的状态,不包含任何可以改变原始对象状态的方法。 3. 操纵者(Caretaker):负责管理备忘录,但只能持有备忘录,...
内容概要: 这段Python代码是一个备忘录管理工具,名为 "MemoManager",它可以帮助用户记录和管理备忘录条目,包括备忘录的内容。 适用人群: 适用于需要记录和管理备忘录的个人用户、学生、职场人士、项目经理以及在...
在Python中,备忘录模式可以通过类的定义来实现。 首先,我们来看`Originator`(发起人)类,它是备忘录模式的核心。`Originator`通常是一个具有复杂状态的对象,它需要被备份。在这个例子中,`Originator`有一个`...
2. **多语言支持**:作为一个全面的工具,代码备忘录通常支持多种编程语言,如Java、Python、C++等,这意味着无论你使用哪种语言进行开发,都能找到合适的存储空间。 3. **快速搜索**:强大的搜索功能是其一大亮点...
python(tkinter) 桌面备忘贴 备忘录
Memento备忘录模式 备忘录模式一个最好想象的例子:undo! 它对对象的一个状态进行了’快照’, 在你需要的时候恢复原貌。做前端会有一个场景:你设计一个表单,当点击提交会对表单内容 验证,这个时候你就要对用户...
备忘录模式是一种设计模式,它允许对象在不破坏封装性的前提下,捕获和存储其内部状态,以便在需要时能恢复到该状态。这种模式在需要保存和恢复对象状态,而又不想对外部世界暴露其内部实现细节时非常有用。备忘录...
备忘录模式(Memento Pattern)是软件设计模式中的一种行为模式,它的主要目的是在不破坏对象封装性的前提下,允许对象在特定时刻保存其内部状态,并能够在之后恢复到保存时的状态。这种模式广泛应用于撤销/重做功能...
在IT行业中,小程序作为一种轻量级的应用形式,已经成为开发者和用户之间的重要桥梁。它们无需安装,即用即走,极大地提升了用户体验。在这个“小程序的几个案例”中,我们看到一个名为"practise_demo"的压缩包,它...
在开发过程中,我们需要考虑数据的持久化存储,这可能涉及到后端服务,如使用PHP、Python或Node.js等服务器端语言搭建API接口,将备忘录数据存入数据库(如MySQL、MongoDB)。同时,为了保证数据安全,应使用HTTPS...
标题中的“记事本备忘录”指的是一个软件或应用程序,它结合了传统的文本编辑器(记事本)和备忘录管理功能。在IT领域,这样的应用通常用于记录简单的文字信息,设置提醒,或者作为轻量级的任务管理工具。 在描述中...
例如,在Python中,可以使用`sqlite3.connect('备忘录.db')`来创建或打开名为“备忘录”的数据库文件。 2. 创建表:备忘录应用的核心是一个“备忘录”表,我们需要用SQL语句创建它。表结构可能包括ID(主键)、标题...
在前端,备忘录的创建、编辑和显示可能通过图形用户界面(GUI)实现,使用诸如Tkinter(Python)、Swing(Java)或Qt(多语言跨平台框架)等库来构建。用户界面应简洁易用,允许用户输入文本、设置提醒、分类备忘录...
最近工作比较繁杂,经常忘事,有时候记了备忘录结果却忘记看备忘录,但是微信是每天都会看的,于是就想到写 一个基于微信的提醒系统。这篇文章主要介绍了使用Python实现微信提醒备忘录功能,需要的朋友可以参考下
即使有时候把事情记录在了小本本上或者手机、电脑端备忘录上,也总会有查看不及时,导致错过的尴尬。如果有一款小工具,可以及时提醒,而不用再主动去查备忘录,化被动为主动,那就再合适不过了。因此,在这里我们就...
第五部分“Python备忘录”是学习过程中的参考资料,总结了基础的值、运算符,以及提供了扩展阅读的链接,这些链接可能是网络文章,涉及Python在实际项目中的应用,如网站结构、数据库操作、Web框架、Web开发等内容。...