Python类编写(原创)
来源:百度文库 编辑:神马文学网 时间:2024/03/29 06:45:01
今天开始进行Python类编写的学习,用起来还是比较简单的,Python允许在任何成员函数中声明一个类的成员变量,不过实际开发的时候这种做法不是一个好习惯。个人认为,Python类的成员变量最好是在类的构造函数里面声明并作初始化,然后在其他的成员函数里面使用,这样就不会出现对成员变量作条件判断的时候,由于对该成员声明和初始化的函数没有被调用到,而导致程序出错。
以下是两个简单的例子:
class Wrong:
def __init__(self):
pass
def GetWrong(self):
return self.bIsWrong
def ShowWrong(self):
if self.bIsWrong == True:
print "wrong"
else:
print "right"
def SetWrong(self,bIsWrong):
self.bIsWrong = bIsWrong
错误的调用顺序:
testWrong = Wrong()
testWrong.GetWrong()
testWrong.ShowWrong()
testWrong.SetWrong(True)
运行结果:
E:\>python Wrong.py
Traceback (most recent call last):
File "Wrong.py", line 19, in ?
testWrong.GetWrong()
File "Wrong.py", line 6, in GetWrong
return self.bIsWrong
AttributeError: Wrong instance has no attribute ‘bIsWrong‘
调整一下调用顺序:
testWrong = Wrong()
testWrong.SetWrong(True)
testWrong.GetWrong()
testWrong.ShowWrong()
运行结果:
E:\>python Wrong.py
wrong
问题在哪里,前面已经讲过了,这只是一个简单的程序,还是比较好找原因,如果遇到一个复杂的程序,就不是这么简单了……
如果我们在构造函数中声明初始化成员变量:
class Wrong:
def __init__(self):
self.bIsWrong = True
问题就解决了,随便利用什么调用顺序,都没有问题。
Posted by农民 at 2006-01-05 21:13 阅读(837)评论(1)引用(0)Python学习
开放权限:所有人可见
引用
http://www.uuzone.com/app/trackBack.do?type=blog&trackBackID=69403
相关内容
更多..
用C语言扩展Python的功能
python中内存排列的问题(原创)
介绍一个Python插件(原创)
_xyz
以下是两个简单的例子:
class Wrong:
def __init__(self):
pass
def GetWrong(self):
return self.bIsWrong
def ShowWrong(self):
if self.bIsWrong == True:
print "wrong"
else:
print "right"
def SetWrong(self,bIsWrong):
self.bIsWrong = bIsWrong
错误的调用顺序:
testWrong = Wrong()
testWrong.GetWrong()
testWrong.ShowWrong()
testWrong.SetWrong(True)
运行结果:
E:\>python Wrong.py
Traceback (most recent call last):
File "Wrong.py", line 19, in ?
testWrong.GetWrong()
File "Wrong.py", line 6, in GetWrong
return self.bIsWrong
AttributeError: Wrong instance has no attribute ‘bIsWrong‘
调整一下调用顺序:
testWrong = Wrong()
testWrong.SetWrong(True)
testWrong.GetWrong()
testWrong.ShowWrong()
运行结果:
E:\>python Wrong.py
wrong
问题在哪里,前面已经讲过了,这只是一个简单的程序,还是比较好找原因,如果遇到一个复杂的程序,就不是这么简单了……
如果我们在构造函数中声明初始化成员变量:
class Wrong:
def __init__(self):
self.bIsWrong = True
问题就解决了,随便利用什么调用顺序,都没有问题。
Posted by农民 at 2006-01-05 21:13 阅读(837)评论(1)引用(0)Python学习
开放权限:所有人可见
引用
http://www.uuzone.com/app/trackBack.do?type=blog&trackBackID=69403
相关内容
更多..
用C语言扩展Python的功能
python中内存排列的问题(原创)
介绍一个Python插件(原创)
_xyz
Python类编写(原创)
在 Vim 中编写 Python 程序
读写网:Pyjamas 使用Python编写AJAX程序
五类按钮代码编写
同花顺公式编写(四)
公式编写(转) 2
MACD应用原则(编写)
公式编写入门(转)
(三)公式编写入门
(四)公式编写入门
(五)公式编写入门
(五)公式编写入门
<Dive into Python>大补贴(1)
python 网页抓取(使用代理服务器),解析一例
开始Python -- 模块(Modules) - Dynamic Script Lang...
什么是Python?
Python 手册
Python学习
python twist
Python 是什么
python 多线程
编写高效的线程安全类
编写高级JScript应用代码(转载)
通达信公式编写入门(一)