###前提
学校の課題をやっているのですが、途中でいきずまっています。
エラー文は「getFirstNameがないですよ」って意味だと思うのですが、ProfileオブジェクトにgetFirstNameって書いているのになぜ、このようなエラー文が出るのですか?また、どうすればこのエラーを解決できますか?
###課題
氏名と氏名から生成されるイニシャルを格納するProfileクラスの設計を目指す。
イニシャル生成処理の実装と内部データに直接アクセスさせないようデータの秘匿を行い、クラスの設計を完成させよ。
その際以下の条件を守ること
0. クラスが持つ属性はすべてprivateな属性とすること
0. 性・名のデータからイニシャルを生成するprivateなメソット__setInitial()を実装すること
0. イニシャルの文字列は「( First Name の最初の文字 ) . ( Last Name の最初の文字 ) . 」の4文字で構成すること
0. 後半のコードのinput()では半角文字が入力される想定で、エラー処理は考慮しなくてよい
0. setName()を経由してインスタンスに渡された性・名のデータに対し、Last Nameは全て大文字に、First Nameは先頭のみ大文字にして、各インスタンス変数に格納する処理を追加する
###エラー
Traceback (most recent call last): File "-----.py", line 54, in <module> print('設定された名前の出力:', x.getFirstName(), x.getLastName(), x.getInitial()) AttributeError: 'Profile' object has no attribute 'getFirstName'
###自分で書いたコード
python
1class Profile(object): 2 def __init__(self): 3 self.firstName = 'fiestName' 4 self.lastName = 'lastName' 5 self.initial = 'initial' 6 7 def __getFirstName(self,fn): 8 a= fn 9 a = a.capitalize() #1文字目を大文字にする 10 self.firstName = a 11 return self.firstName 12 13 def __getLastName(self,ln): 14 b = ln 15 b = b.upper() #大文字にする 16 self.lastName = b 17 return self.lastName 18 19 def __getInitial(self): 20 return self.initial 21 22 def __setInitial(self,first,last): 23 c = first + '.' + last + '.' 24 self.initial = c 25 return self.initial 26 27 def setName(self,fn,ln): 28 self.__getFirstName(fn) 29 self.__getLastName(ln) 30 31 #文字型にする 32 first = str(fn) 33 last = str(ln) 34 35 #最初の文字を取得 36 first = first[0] 37 last = last[0] 38 #大文字にする 39 first = first.upper() 40 last = last.upper() 41 self.__setInitial(first,last) 42 return 43 44x = Profile() 45print('First Nameを入力(小文字)') 46fn = input() 47print('Last Nameを入力(小文字)') 48ln = input() 49 50x.setName(fn,ln) 51 52print('設定された名前の出力:', x.getFirstName(), x.getLastName(), x.getInitial()) 53 54
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。