試圖找到一些關於如何在類和子類中使用集合和字典的信息。我有一項任務,指示我們創建一個類Country
和一個子類CountryCatalogue
。然後,在函數中創建一個名爲cDictionary
和catalogue
的字典(可以是列表,集合或字典,我決定使用set,但可能需要根據您的建議進行更改)。我遇到的問題是,當我初始化cDictionary
和catalogue
class CountryCatalogue(Country):
下它告訴我沒有的功能,在它之下(例如,__init__()
,findCountry()
,addCountry()
,等等)可以「看見」 catalogue
被初始化,並給我一個當我嘗試訪問這些列表中的catalogue
時出現「無效變量」錯誤,如果我在__init__
函數中初始化它們,則會發生同樣的情況;其他功能不能看到它,但至少__init__
正常工作。類函數中的集合和字典
不幸的是,類的糟糕和我們被教了所有單獨的重要「主題」的蟒蛇,但沒有如何一起使用它們。
實施例:
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的子類是沒有意義的,對嗎?一組國家又是一個國家呢?或者,如果每個「國家」都創建爲「國家目錄」,則每個國家/地區的成員列表「目錄」將會不同。您將擁有與國家一樣多的目錄。 –
那麼,國家的其中一項功能是setPopulationDensity,您可以在其中計算人口密度。但是,在CountryCatalogue中,您有一個函數filterCountriesByPopDensity,它指示:「請求用戶輸入人口密度範圍的下限和上限,然後查找所有人口密度在該範圍內的國家。」無處不在計算人口密度,它表明人口密度已經計算出來(我從國家班級中假設),但我不知道如何從一個班級獲得功能並在另一個班級中使用 – MezyMinzy