关于python类的一些问题

1 # _*_ coding:utf-8 _*_
2 class A(object):
3 def __init__(b, c):
4 b.c=c
5 def d(b):
6 for e in b.c:
7 print e
8
9 f=A(['一', '二', '三', '四'])
10 g=A(['五', '六', '七', '八'])
11
12 f.d()
13 g.d()

请问:
第三行的__init__(b, c)有什么作用?为什么要放两个参数?
第四行的b.c=c是什么意思?
第五行的d()函数的参数为什么是b,而不是c或者其他?
第六行的for循环,为什么是in b.c而不是in b或者in c?
第九行是什么意思?
第十二行在调用d()函数时,为什么不带参数?
整个程序的工作流程是什么?

多谢各位python大牛解答.待我无疑问是另有50分送上.

这个程序没有遵从python的惯例,所以可能对你的理解产生一些问题。

__init__(b, c)和d(b)是class A的方法,按照惯例,第一个参数应该写为self,因为类在调用它的方法的时候会自动把实例作为第一个参数传到它的方法。所以,第一个参数b,其实调用时候的class A的实例。

b.c = c,其实就是给当前实例添加一个属性c,c就是传进来的参数

同理,d()函数的第一个参数当然可以是其他,只是代表当前实例而已

for循环中它是循环初始化时传进来的参数,因为在初始化时把该参数记录到了属性c中,所以是b.c

所以,class A改写为如下代码,可能你就明白了

class A(object):
    def __init__(self, c):
        self.c=c
    def d(self):
        for e in self.c:
            print e

第九行就是为了获得class A的实例,所以传入初始化参数['一', '二', '三', '四']来初始化以获得实例

因为之前说过了,class中的方法第一个参数是会自动传入为当前实例,所以调用时第一个参数是不需要传的,因此调用d()函数时,不需要带参数


这个程序只是定义了一个类A,它初始化是需要传入参数c,并且参数c是可以循环的。类A提供了方法d,用来打印参数c的内容

之后的几行代码只是实例化了类A,并进行了方法调用而已

追问

我这样理解对吗?

    b是class A的一个空实例.

    经过实例化后,['一', '二', '三', '四']就成为了c .

    b.c=c的意思就是把['一', '二', '三', '四']作为空实例b的一个属性.

追答

可以这样理解
__init__就是用来初始化实例的,你可以理解为一个正在进行初始化的实例

追问

多谢,我明白了.

温馨提示:答案为网友推荐,仅供参考
相似回答