首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

怎么给现成.py程序加下循环

2013-03-04 
如何给现成.py程序加上循环?新手刚接触python网上找了一个代码想利用起来。代码的框架大概是这样的class do

如何给现成.py程序加上循环?
新手刚接触python

网上找了一个代码想利用起来。


代码的框架大概是这样的


class do-sth:

    balabala...
    ....有个常量1,常量2
    def __init__(abc)
       ....
    def fun1(abc)
       .....

if __name__ == '__main__':
    dobalabala = do-sth()
    dobalabala.fun1()
  

现在我想把这个程序改造一下,将常量1,常量2改造一下
改成变量,变量从我文件中读取(a1,a2)
文件中a1和a2变量是用|分隔的。
类似这种:
abc|def
xyz|rst
zzz|ttt


单独读取并打印出来,我是可以做出来类似下面的

file = open("./data.txt") 
    for line in file.xreadlines():
        str1 = line
        a1 = str1.split('|')[0]
        a2 = str1.split('|')[1]

求助:如何将 原来程序的功能引入到我这个循环里面呢?
我直接将原来的程序放在 上面语句之后,并且将原程序中的常量改成变量名字,a1,b1 ;测试下来,只是做了一次,也就是文件中最后的zzz,ttt套回原程序操作了一次。
前面的2次等于没操作。

如果将文件读取的for循环放最后,又提示a1,b1变量没有定义什么的。

请大侠指导,谢谢……
[解决办法]
修改__init__为:
def __init__(self, abc, a1, a2):
    self.a1 = a1
    self.a2 = a2

a1,a2用到实例中。

在调用时,
if __name__ == '__main__':
    dobalabala = do-sth(a1, a2)
    dobalabala.fun1()

[解决办法]
加到循环中

if __name__ == '__main__':
    file = open("./data.txt") 
    for line in file.xreadlines():
        str1 = line
        a1 = str1.split('
[解决办法]
')[0]
        a2 = str1.split('
[解决办法]
')[1]
        dobalabala = do-sth(a1, a2)
        dobalabala.fun1()


[解决办法]
完整的例子在这里:


#-*- coding: utf-8 -*-

class AObj(object):
    # a1 = 'aaa'
    # a2 = 'bbb'
    def __init__(self, abc, a1, a2):
        self.a1 = a1
        self.a2 = a2
        self.abc = abc
        
    def func1(self):
        f = self.abc
        print f

if __name__ == '__main__':
    f = open('./data.txt', 'r')
    lines = f.xreadlines()
    for line in lines:
        lst = line.split('


[解决办法]
')
        clsObj = AObj(lst[0], lst[1])
        clsObj.func1()


[解决办法]
引用:
楼上的代码不通过,会报错。

Traceback (most recent call last):
  File "test.py", line 21, in <module>
    clsObj = AObj(lst[0], lst[1])
TypeError: __init__() takes exactly 4 arguments (3 given)
 ……

哦,忘记了,你还有个参数abc,把那个调用修改下:

if __name__ == '__main__':
    f = open('./data.txt', 'r')
    lines = f.xreadlines()
    for line in lines:
        lst = line.split('
[解决办法]
')
        clsObj = AObj('abc', lst[0], lst[1])
        clsObj.func1()

热点排行