在类函数defintion中使用变量,它在其他类函数中创建蟒蛇

时间:2015-06-03 11:10:02

标签: python python-2.7

如何使用我在其他函数中创建的类函数中的变量,而不使用globalreturn?还有其他一些方法吗?

class functions:
    def func1():

        x=[1,2]

    def func2():

        print x
func1()
func2()

输出:

[1,2]

真正的问题:

class WebPage:
    def __init__(self, filename):
        self.filename=filename


    def process(self):

        toproc=open(self.filename,'r')
        lines=toproc.readlines()
        for i in range(len(lines)):
            lines[i] = lines[i].rstrip()
        head=[]
        body=[]

        process....
        head=[headline]
        body=[sitebody]

    def printedheadbody:
        print head
        print body

2 个答案:

答案 0 :(得分:2)

使它们属性并使用self.head,self.body,你也不需要调用readlines,你可以直接遍历文件对象并在你想要去除时调用line.rstrip()。您还应该从python2中的对象继承以支持新的样式类。

class WebPage(object):
    def __init__(self, filename):
        self.filename = filename
        self.head = []
        self.body = []

    def process(self): 
        with open(self.filename) as f:
            for line in f:
                # use self.head,self.body     

    def printedheadbody(self):
        print self.head
        print self.body

在您的方法中不使用self,您基本上拥有静态方法,这些方法不允许您使用self引用属性。

要访问这些方法,请按顺序创建实例并调用方法:

w = WebPage("foo.html")

w.process()
w.printedheadbody()

您也不需要print方法,您可以使用实例访问属性并只打印每个:

w = WebPage("foo.html")

w.process()
print(w.head)
print(w.body)

也可以在流程方法中创建属性:

def process(self):
    self.head=[]
    self.body=[]
    with open(self.filename) as f:
        for line in f:
            ....

但是你需要确保在尝试访问它们之前调用了进程。

答案 1 :(得分:1)

您需要在课程中使用quantity(DECIMAL(8,1))。这个变量就是它自己的一个实例。

self