0

我正在尝试将生成的数据直接输入domeinnaamemailadres()到特定的类对象中,例如a. 我希望将数据输入到 domeinnaam 属性中。我该怎么做?

class Customer:
    "De klasse customer"

    def __init__(self, naam, adres, woonplaats, email, domeinnaam= ""):
        self.naam = naam
        self.adres = adres
        self.woonplaats = woonplaats
        self.email = email
        self.domeinnaam = domeinnaam      

    def domeinnaamemailadres(self):
        c = self.email[self.email.find("@"):]


a = Customer('Name1', 'address', 'Utrecht', 'Email1@hotmail.com', domeinnaamemailadres)
b = Customer('Name2', 'Bonestaak', 'Maarssen', 'Bijjaapishetaltijdraakhotmail.com')
4

2 回答 2

1

您不能以这种方式调用该方法,因为调用它时该实例不存在。

可能你想做类似的事情:

class Customer:
    "De klasse customer"

    def __init__(self, naam, adres, woonplaats, email, domeinnaam= ""):
        self.naam = naam
        self.adres = adres
        self.woonplaats = woonplaats
        self.email = email
        self.domeinnaam = domeinnaam
        if not self.domeinnaam:
            #domeinnaam not provided, build one using self.email
            self.domeinnaam = self.domeinnaamemailadres()


    def domeinnaamemailadres(self):
        return self.email[self.email.find("@"):]


a = Customer('Name1', 'address', 'Utrecht', 'Email1@hotmail.com')
b = Customer('Name2', 'Bonestaak', 'Maarssen', 'Bijjaapishetaltijdraakhotmail.com')

您可以避免if使用三元运算符的语句:

self.domainnaam = domeinnaam if domeinnaam else self.domeinnaamemailadres()

我想对你的代码做一些评论。

  1. 首先,尝试用英文写作。所以使用英文变量名。[name不是naam等]
  2. 有些名字真的很晦涩。做什么domeinnaamemailadres?我会称它为domain_name_from_email_address.
  3. 文档字符串"De klasse customer"完全没用。它不会class Customer在行中添加任何信息,也不是英文的。

为什么要写英文?首先是因为如果你不这样做,你怎么能在 StackOverflow 这样的地方寻求帮助呢?在这种特定情况下,代码很简单,无论如何我都能理解,但是如果事情变得复杂,那么我将无法获得您想要做的事情。

其次,英语是计算机科学语言。只要你写的东西被别人读到的可能性很小,你就必须学习使用它。出于这个原因,我从不使用我的母语(意大利语)编写代码。即使你认为你永远不会向任何人展示代码,你可能总是会遇到一个错误并且需要向其他人询问(例如在 StackOverflow 或某些论坛/邮件列表上)并且他们无能为力你是因为他们一个字都不懂。

于 2012-11-15T13:11:20.997 回答
1

为什么不改变这一行:

self.domeinnaam = domeinnaam      

对此:

self.domeinnaam = domeinnaam if domeinnaam else email[email.find("@"):]

那里不需要另一个函数,您可以使用该参数,因为它仍在范围内。如果存在,这也会将参数分配domeinnaam给您的成员变量,否则它将使用email参数中的域名,从而允许您删除以下检查和功能。

于 2012-11-15T13:13:54.553 回答