gpt4 book ai didi

python - 属性错误 : 'str' object has no attribute (function)

转载 作者:太空宇宙 更新时间:2023-11-04 03:13:31 25 4
gpt4 key购买 nike

我正在尝试编写一个面向对象的程序,允许我输入和存储每月收入和账单,并根据需要查看所有数据。我可以成功地存储一个对象,但是当我尝试使用我的 view_all 函数时,我得到这个错误:

在view_all中打印(item.get_month())AttributeError: 'str' 对象没有属性 'get_month'

如果您能帮我找出这个问题,我将不胜感激!

# Create a month class

class Month:

# Use __init__ method to initialize the attributes

def __init__(self, month, income, tds, pnm, zia, water):
self.__month = month
self.__income = income
self.__tds = tds
self.__pnm = pnm
self.__zia = zia
self.__water = water


# The set methods accept arguments:

def set_month(self, month):
self.__month = month

def set_income(self, income):
self.__income = income

def set_tds(self, tds):
self.__tds = tds

def set_pnm(self, pnm):
self.__pnm = pnm

def set_zia(self, zia):
self.__zia = zia

def set_water(self, water):
self.__water = water

# The get methods return the data:

def get_month(self):
return self.__month

def get_income(self):
return self.__income

def get_tds(self):
return self.__tds

def get_pnm(self):
return self.__pnm

def get_zia(self):
return self.__zia

def get_water(self):
return self.__water

# The __str__ method return's the object's state as a string

def __str__(self):
return "Month: " + self.__month + \
"\nIncome: " + self.__income + \
"\nTDS: " + self.__tds + \
"\nPNM: " + self.__PNM + \
"\nZia: " + self.__zia + \
"\nWater: " + self.__water

和主程序:

import Month_Class
import pickle

ADD_MONTH = 1
VIEW_ALL = 2
QUIT = 3

FILENAME = 'ruidoso.dat'

def main():
months = load_months()
choice = 0
while choice != QUIT:
choice = get_menu_choice()

if choice == ADD_MONTH:
add_month(months)
elif choice == VIEW_ALL:
view_all(months)

save_months(months)


def load_months():
try:
input_file = open(FILENAME, 'rb')
months_dct = pickle.load(input_file)
input_file.close
except IOError:
month_dct = {}
return month_dct

def get_menu_choice():
print()
print('Menu')
print('------------------')
print("1. Add data for a new month")
print("2. View data for all months")
print('Any other number saves and quits the program!')
print()

choice = int(input('Enter your choice: '))
while choice < ADD_MONTH or choice > QUIT:
choice = int(input('Enter a valid choice: '))
return choice

def add_month(months):
month = input('Enter the name of the month: ')
income = input('Total income for this month: ')
tds = input('TDS Broadband bill total: ')
pnm = input('PNM bill total: ')
zia = input('Zia Natural Gas bill total: ')
water = input('City of Ruidoso bill total: ')

entry = Month_Class.Month(month, income, tds, pnm, zia, water)

if month not in months:
months[month] = entry
print('The entry has been added')
else:
print('That month already exists!')

def save_months(months):
output_file = open(FILENAME, 'wb')
pickle.dump(months, output_file)
output_file.close()


def view_all(months):
for item in months:
print(item.get_month())
print(item.get_income())
print(item.get_tds())
print(item.get_pnm())
print(item.get_zia())
print(item.get_water())

main()

最佳答案

你需要以不同的方式迭代字典

for month, item in months.items():
print(item.get_month())
...

关于python - 属性错误 : 'str' object has no attribute (function),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37128641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com