我正在尝试直接将从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')
答案 0 :(得分: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()
我想对您的代码做一些评论。
name
not naam
等。] domeinnaamemailadres
做了什么?我称之为domain_name_from_email_address
。"De klasse customer"
完全没用。它不会向class Customer
行添加任何信息,也不会使用英语。你为什么要用英文写作?首先,因为如果你不这样做,那么你如何在像StackOverflow这样的地方寻求帮助?在这个特定的情况下,代码很简单,无论如何我都明白,但如果事情变得复杂,那么我就无法得到你想做的事。
其次,英语是计算机科学的 语言。这是你真正必须学习和使用的东西,只要你写的东西被其他人读取的可能性很小。因为这个原因,我从不用母语(意大利语)编写代码。 即使你认为你永远不会向任何人展示代码,你可能总是会遇到一个错误并且需要向其他人询问(例如在StackOverflow或某些论坛/邮件列表上)和 bam 他们无法帮助你,因为他们不懂一个字。
答案 1 :(得分:1)
为什么不改变这一行:
self.domeinnaam = domeinnaam
对此:
self.domeinnaam = domeinnaam if domeinnaam else email[email.find("@"):]
那里不需要其他函数,你可以使用参数,因为它仍在范围内。这也将domeinnaam
arugment分配给你的成员变量(如果存在),否则它将使用email
参数中的域名,允许你删除以下检查和功能。