Python 实例的方法在调用时运行两次
当我将一个类导入到另一个文件中,插入它并调用它的一个方法时,它会运行两次 课程本身是:Python 实例的方法在调用时运行两次,python,object,python-3.x,methods,Python,Object,Python 3.x,Methods,当我将一个类导入到另一个文件中,插入它并调用它的一个方法时,它会运行两次 课程本身是: class DBAuth(object): def __init__(self, driver=None, username=None, password=None, host='localhost', port=None, database=None): self.driver = driver self.username = use
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'
为什么它会这样,正确调用这个方法的正确方法是什么?我发现了这个问题。
原来我是用
\uuuu init\uuuuu.py
来导入和测试脚本的,这是一种糟糕的做法。我无法重现这一点;您发布的代码中没有任何内容会导致它打印两次。@MartijnPieters我认为这不是全部代码-必须在某个地方调用test_method()
,但我没有魔法水晶球,是吗?@MartijnPieters我对整个代码进行了注释,只留下这一部分来确保,没有t@ElmoVanKielmo:这也可能是由自定义的print()
函数或自定义的sys.stdout
@Rickin:doesprint('anythis')
打印两次造成的?打印什么(repr(dbauth.test_method())
打印什么?