【问题标题】:Method of a instance runs twice when called [closed]实例的方法在调用时运行两次[关闭]
【发布时间】: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


【解决方案1】:

我发现了问题。 原来我使用__init__.py 来导入和测试脚本,这是一种不好的做法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多