如何从Python中的类内部方法访问变量?

时间:2012-08-30 05:50:43

标签: python class

我在Python中有一个连接数据库的数据库模块,从表登录中提取数据。提取数据,即用户名和密码由类中的变量uname和passw inside方法保存。我正在尝试登录login.py中的数据库模块,我将需要变量uname和passw。我如何访问变量? 这是database.py。

#usr/bin/python

import MySQLdb as mdb


class data:
    hey = "ok"
    def __init__(self):
        """Retrieves the data from the database"""

    def db(self):   
        #Database Connection
        con = mdb.connect('localhost', 'root', 'devil', 'data');


        #Submit statements to SQL server
        cursor = con.cursor()       
        cursor.execute("SELECT * FROM login")

        #Retrieves data from SQL
        rows = cursor.fetchall()  
        row = list(rows)
        self.uname = [x[1] for x in row]
        self.passw = [k[2] for k in row]    

hello = data()

我想在login.py中调用变量uname和passw。我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

你做不到。这些变量是方法的本地变量,除非方法正在执行,否则不存在。如果您想稍后读取这些值,则需要通过执行self.uname = ...self.passw = ...来创建实例属性。然后,您可以在以后引用该对象的任何地方阅读它们。

答案 1 :(得分:2)

在您的示例中,unamepassw是在data.db()之外不可见的本地变量。要使其可见,您可以通过添加self.使其成为实例属性(字段)。在constuctor中,您可以添加self.uname = Nonedb()方法self.uname = [...]。然后您可以uname = hello.uname访问它们。

如果您想在其他文件中使用它:

import database

db_data = database.data()
print('user: %s' % (db_data.uname))