- 论坛徽章:
- 0
|
首先回答一下LZ的一个概念(个人理解) LZ的写法是实例变量,不是类变量。
类变量是这样的,而且是静态的
class Student
name="abc"
实例的成员变量
class Student
def __init__(self)
self.name = "abc"
第二:这两种写法的快慢问题。肤浅的理解一下,应该都一样吧。而且我不知道Python的编译器是否会有优化处理,如果编译器有优化,这种代码应该是没有速度区别的。
第三,到底是用参数,还是成员变量。我觉得应该从面向对象的理解来说。
class Student:
def __init__(self):
self.name = "pumaboyd"
def run(self):
print "who run:",
self.name
if __name__== '__main__':
aobj = Student()
aobj.run()
如果是这样,应该是成员变量的方式更合理。因为你实例化中应该已经明确的对象的名称。这个run的动作,就不需要在强调一遍ruan(username)这种方式了。当然在实际运用中,不能创建对象的时候就写死username,所以我觉得这个时候构造函数以参数的方式传入就很合理了。改进如下:
class Student:
def __init__(self,name):
self.name = name
def run(self):
print "who run:",self.name
if __name__== '__main__':
aobj = Student("pumaboyd")
aobj.run()
这里备注一下,Python中有定义属性的方式。但我目前的感觉是使用成员变量来作为属性更方便。个人的一点体会,还请大家指点。
[ 本帖最后由 pumaboyd 于 2008-9-24 14:13 编辑 ] |
|