2012-11-15 96 views
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', '[email protected]', domeinnaamemailadres) 
b = Customer('Name2', 'Bonestaak', 'Maarssen', 'Bijjaapishetaltijdraakhotmail.com') 
+1

你可以請嘗試使用更易於閱讀的方法和變量名稱 –

+2

這是非常可讀的荷蘭語。 – Matthias

回答

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', '[email protected]') 
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上或在一些論壇/郵件列表如)別人的需要和巴姆他們可以不幫你,因爲他們不懂一個字。

+0

也許OP不使用英語作爲主要語言?他們可以隨意調用他們的變量。 – Aesthete

+0

@Aesthete英語也不是我的主要語言,但我從不使用意大利語代碼。否則其他人在這種情況下應該如何理解我的代碼?或者如果這個項目是開源的,那麼你就會截掉那些不會說你母語的人,而幾乎任何人都知道英語(特別是在計算機科學相關的環境中)。 – Bakuriu

1

爲什麼不只是改變這一行:

self.domeinnaam = domeinnaam  

要這樣:

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

沒有必要在其他功能還有,你可以使用參數,因爲它仍然在範圍之內。如果它存在,這也會將domeinnaam指定賦值給您的成員變量,否則它將使用email參數中的域名,從而允許您刪除以下檢查和功能。