クラスとサブクラスの内部でセットとディクショナリを使用する方法についての情報を見つけようとしています。クラスCountry
とサブクラスCountryCatalogue
を作成するように私に指示する課題があります。次に関数では、cDictionary
とcatalogue
という辞書を作成します(これはリスト、セット、または辞書にすることができますが、私はセットを使用することにしましたが、あなたの提案に応じて変更する必要があります)。私はに実行している問題は、私がclass CountryCatalogue(Country):
下cDictionary
とcatalogue
を初期化するとき、それは初期化され、私に与えるされている私にcatalogue
を「見る」ことができます(例えば、__init__()
、findCountry()
、addCountry()
、など)その下の機能を全く伝えていないということですこれらのリスト内のcatalogue
にアクセスしようとすると「無効な変数」というエラーが発生し、__init__
関数でそれらを初期化すると同じことが起こります。他の機能はそれを見ることはできませんが、少なくとも__init__
は正常に動作します。クラス関数のセットとディクショナリー
残念ながら、クラスの種類の吸うと私たちは、pythonのためのすべての個別の重要な "テーマ"を教えていたが、一緒にそれらを使用する方法ではありませんでした。
例:__init__(self, ...)
で
class CountryCatalogue(Country):
def __init__(self, filename = "", name = "", pop = 0, area = 0, continent = ""):
cDictionary = {} #Initializing the cDictionary and catalogue here leads to errors in other functions
catalogue = []
super().__init__(name = "",pop = 0,area = 0,continent = "")
fillcdict = open("continent.txt") #not really important for the problem
linescdict = fillcdict.readlines()[1:]
for line in linescdict:
entries1 = line.split(",")
country = str(entries1[0])
continentwrong = str(entries1[1])
entries2 = continentwrong.split ("\n")
continent = str(entries2[0])
cDictionary["keywords"] = country
cDictionary["values"] = continent
self._continent = continent
fillcatdict = open(filename)
linescatalogue = fillcatdict.readlines()[1:]
for line in linescatalogue:
entries = line.split("|")
countrydata = str(entries[0])
populationdata = entries[1]
areadata = entries[2]
catalogue.append(countrydata)
def findCountry(self): #So, when I try and use catalogue in this function I get a 'unresolved reference' note in Pycharm and a "invalid variable' error if I run the problem
findcountinp = input("Please enter a country name: ")
if findcountinp in catalogue:
return self._name+"|"+self._continent+"|"+self._area+"|"+self._population
else:
return "Country not found!"
どのようにしてカタログから物事を取り除くことができますか? カタログは、別々のデータファイルで提供されるすべての国のリストです。私が質問に含めることのできなかった別の機能では、ユーザーに国を入力してからカタログを検索し、入力した国を削除するよう求めなければなりません。 – MezyMinzy
'self.catalogue.pop(index)'または 'self.catalogue.remove(country)'です。あなたのデザインは容疑者です。 'CountryCatalogue'を' Country'のサブクラスにするのは意味がないと思いますよね?国のグループはどのようにして国家となっていますか?あるいは、 'Country'が' CountryCatalogue'として作成されている場合、 'catalogue'のメンバリストは国ごとに異なります。あなたは国と同じくらい多くのカタログを持っています。 –
さて、国の関数の1つは、人口密度を計算するsetPopulationDensityです。しかし、次にCountryCatalogueにはfilterCountriesByPopDensityという関数があります。「人口密度範囲の上限と下限を入力して、その範囲内にある人口密度のすべての国を見つけるように尋ねます。人口密度を計算していることを示しています(私はCountryクラスから推測しています)。しかし、あるクラスから関数を取得して別のクラスで関数を使用する方法はわかりません。 – MezyMinzy