将方法输出输入到类obj中

2024-09-29 23:16:27 发布

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

我试图将从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')

Tags: 数据对象selfcom属性emaildefde
2条回答

不能以这种方式调用该方法,因为调用时实例不存在。你知道吗

可能你想做一些类似的事情:

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. docstring "De klasse customer"是完全无用的。它不向class Customer行添加任何信息,也不是英文的。你知道吗

你为什么要用英语写作?首先,如果你不这样做,你怎么能在像StackOverflow这样的地方寻求帮助呢?在这个特定的例子中,代码非常简单,无论如何我都能理解,但是如果事情变得复杂,那么我就无法得到您想要做的事情。你知道吗

其次,英语是计算机科学的语言。这是你必须学习和使用的东西,只要你写的东西被别人读到的可能性很小。因此我从不使用母语(意大利语)编写代码。 即使你认为你永远不会向任何人展示代码,你也可能最终会遇到一个bug,需要询问其他人(例如,在StackOverflow或某个论坛/邮件列表上),而bam他们无法帮助你,因为他们一个字也听不懂。你知道吗

为什么不改变这一行:

self.domeinnaam = domeinnaam      

对此:

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

这里不需要另一个函数,您可以使用参数,因为它仍然在作用域中。这还将domeinnaamarumging分配给成员变量(如果存在),否则它将使用email参数中的域名,从而允许您删除以下检查和函数。你知道吗

相关问题 更多 >

    热门问题