【发布时间】:2014-04-24 13:00:13
【问题描述】:
当我将一个类导入到不同的文件中,实例化它并调用其中一个方法时,它会运行两次
类本身是:
class DBAuth(object):
def __init__(self, driver=None, username=None, password=None,
host='localhost', port=None, database=None):
self.driver = driver
self.username = username
self.password = password
self.host = host
self.port = port
self.database = database
def test_method(self):
teststr = "database is '{0}' and your user is '{1}'".format(
self.database, self.username)
return teststr
我是这样使用它的:
from lbauth.model import DBAuth
dbauth = DBAuth(
driver = 'postgresql',
username = 'user',
password = 'passwd',
host = 'localhost',
port = '5432',
database = 'dbname'
)
print(dbauth.test_method())
返回:
>database is 'dbname' and your user is 'user'
>database is 'dbname' and your user is 'user'
为什么会这样?正确调用此方法的正确方法是什么?
【问题讨论】:
-
我无法复制这个;您发布的代码中没有任何内容会导致它打印两次。
-
@MartijnPieters 我认为这不是全部代码 - 必须在某个地方再次调用
test_method(),但我没有魔法水晶球,是吗? -
@MartijnPieters 我已经评论了整个代码,只留下这部分以确保没有
-
@ElmoVanKielmo:这也可能是由自定义
print()函数或自定义sys.stdout引起的。 -
@Rickin:
print('anything else')会打印两次吗?print(repr(dbauth.test_method()))打印什么?
标签: python object python-3.x methods