既然Python是面向对象的语言,自然是支持类的定义的。现在就动手,来定义我们的第一个类:
记得吗?Python是以缩进来界定代码块的位置,而不是靠‘{’之类的符号。
class MyClass:
"A simple example class"
i = 12345 #this is a field
def __init__(self):
self.perInstVar = 'a'
def f(self):
return 'hello world'
x = MyClass()
print x.f()
我们可以看到下面几点:
【1】 class的documentation comment是类似javadoc的东西
【2】 class包含data field和member function。 其中i是class variable,就是static的变量。而__init__()内部定义的是per instance variable。 __init__()是个特殊的函数,会在对象被构造的时候被调用。
【3】单行注释的写法
【4】member function的第一个参数一定是self,类似java里的this。这个需要显示传入,和java/c++是不一样的
【5】 可以看到class的初始化和调用方式
bleem1998 回复于:2005-06-02 09:20:27
应该是self.i = 12345
否则i就是一个全局对象了
sakulagi 回复于:2005-06-02 10:33:55
不需要写self.,否则会出错的。
wolfg 回复于:2005-06-02 10:48:04
不加self,就是shared class data,有点像Java的static变量
加了self,就是per-instance data,也就是实例变量了
class MyClass:
"A simple example class"
i = 12345 # shared class data
def __init__(self, value):
self.name = value # per-instance data
def f(self):
return 'Hello, ' + self.name
print MyClass.i
x = MyClass('wolfg')
print x.f()
print MyClass.f(x) # also can call as class method
bleem1998 回复于:2005-06-02 11:10:04
那怎样定义一个只属于自己的变量呢?
wolfg 回复于:2005-06-02 11:24:25
引用:原帖由 "bleem1998"]那怎样定义一个只属于自己的变量呢?
发表:
什么叫做“只属于自己的变量”呢?
bleem1998 回复于:2005-06-02 11:31:30
>;>;>; class ZZZ:
... i=[]
... def f(self):
... self.i.append(0)
...
>;>;>; a=ZZZ()
>;>;>; b=ZZZ()
>;>;>; a.f()
>;>;>; b.i
[0]
>;>;>; a.f()
>;>;>; b.i
[0, 0]
>;>;>;
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 一个 有趣 回复 self 变量 定义 bleem1998 属于 class |
注册
个人空间
