Python,为什么队列中只有一个类实例的某些属性可以在另一个类中调用?

2024-04-29 11:40:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我是新手。尝试编辑一个API示例来做我需要它做的事情。取得了一些进展,但在这个问题上挂断了电话。你知道吗

有以下课程:

class User:
   def __init__(self, emailAddress, emailId, listId, campaignId, fName, lName,gender,birthDate,city,state,country,zip):
    parts = emailAddress.split('@')
    if len(parts) != 2:
        raise Exception("Invalid email address: %s" % emailAddress)

    self.emailAddress = emailAddress.lower()
    self.emailMd5     = hashlib.md5(emailAddress).hexdigest()
    self.domain       = parts[1]
    self.emailId      = emailId
    self.listId       = listId
    self.campaignId   = campaignId
    self.fName        = fName
    self.lName        = lName
    self.gender       = gender
    self.birthDate    = birthDate
    self.city         = city
    self.state        = state
    self.country      = country
    self.zip          = zip

我将电子邮件加载到队列中,如下所示:

    u = User(emailAddress, emailId, listId, campaignId, fName, lName, gender,birthDate,city,state,country,zip)
    users[u.emailMd5] = u

    totalEmails += 1
    if len(users) % batchSize == 0:
        q.put(users, block=True)
        users = {}
if len(users) > 0:
    q.put(users, block=True)
for i in xrange(numThreads):
    q.put("done")

在我遇到问题的地方:

def buildXmlRequest(self, users):
    emailRecords = []

    for user in users:
        emailRecords.append("<email><recipient>%s</recipient><list>%d</list><domain>%s</domain></email><redirect>http://website/?emailId=%d</redirect>" \
                   % (user.emailMd5, self.cfg['list_id'], user.domain))

buildXmlRequest的调用方式如下:

        users = None
        while users == None:
            try:
                users = self.q.get(timeout=1)
            except Queue.Empty:
                pass
        {snip}
        data['request'] = self.buildXmlRequest(users.values())

我希望能够访问“用户.emailId,因此我可以执行以下操作:

    for user in users:
        emailRecords.append("<email><recipient>%s</recipient><list>%d</list><domain>%s</domain></email><redirect>http://website/?emailId=%d</redirect>" \
                   % (user.emailMd5, self.cfg['list_id'], user.domain, user.emailId))

但是根据我的IDE(PyCharm 3.0),只有用户域'和'用户.md5'存在。我甚至不明白这些属性是如何分配的?只有两个例子用户域(我已经在这段代码中显示了这两个)。你知道吗

我试过修改

    users[u.emailMd5] = u to:

    users[u.emailId] = u

只是看看它是否出现在IDE中,而不是。你知道吗

同样,对于python来说是非常新的,所以在“类实例”等方面可能没有使用正确的词

谢谢你!你知道吗


Tags: selfemaildomaingenderfnameuserslistbirthdate