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

この行を変更しないのはなぜですか。

self.domeinnaam = domeinnaam      

これに:

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

そこに別の関数は必要ありません。引数はまだスコープ内にあるため、引数を使用できます。これによりdomeinnaam、メンバー変数が存在する場合はそれもメンバー変数に割り当てられます。存在しない場合は、email引数のドメイン名が使用され、次のチェックと関数を削除できます。

于 2012-11-15T13:13:54.553 に答える
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. まずは英語で書いてみてください。したがって、英語の変数名を使用してください。[ namenot naametc.]
  2. 一部の名前は本当にあいまいです。何をしdomeinnaamemailadresますか?私はそれを次のように呼びますdomain_name_from_email_address
  3. docstring"De klasse customer"はまったく役に立ちません。行に情報を追加することはclass Customerなく、英語ではありません。

なぜ英語で書く必要があるのですか?まず第一に、もしそうでなければ、StackOverflow のような場所でどうやって助けを求めることができるのでしょうか? この特定のケースでは、コードはとにかく理解できるほど単純ですが、物事が複雑になると、あなたがやりたいことを得ることができなくなります。

第二に、英語はコンピュータ サイエンスの言語です。あなたが書いたものが他の誰かに読まれる可能性が最小限であるときはいつでも、それはあなたが本当に学び、使用しなければならないものです. このため、母国語 (イタリア語) を使用してコードを記述することはありません。また、コードを誰にも見せないだろうと思っていても、バグが発生し、他の人 (StackOverflow やフォーラム/メーリング リストなど) に尋ねる必要が常にあり、彼らは助けにならないでしょう。彼らは言葉を理解していないからです。

于 2012-11-15T13:11:20.997 に答える