python - 从文本文件分配 set/get 方法
问题描述
我对 Python 比较陌生(约 5 个月),所以请原谅我的无知。我的任务是创建一个程序来做一些事情。
首先,我有一个文本文件,其中存储的信息如下:
姓名、街道、城邦邮编、生日、宠物。
其次,我的指示包括:
- 读取文本文件并确定年龄并根据年龄确定折扣。例如,如果年龄是 18 -25 岁,他们将获得 5% 的折扣。
- 将宠物偏好与供应商匹配
我正在为每个属性使用类。我有一个单独的类信息文件,如下所示。我为列出的每个属性设置/获取方法。
来自信息.py
class GetInfo:
def __init__(self,name,street,city,state,zipcode,birthday,pet):
self.__name = name
def set_name(self,name):
self.__name = name
def get_name(self):
return self.__name
最后,我必须为每个人写一封信。我不知道如何从本质上将数据分开以便为每个人写信。我将使用 .write(str) 方法编写每一行。到目前为止,这是我的主要程序:
import information
import os
import time
CURRENT_YEAR = 2018
def main():
customerInfo = information.GetInfo(name,street,city,state,zipcode,birthday,pet)
tempFile = open('temp.txt','w')
with open('c.TXT') as customerList:
lines = customerList.readlines()
for line in lines:
tempFile.write( str(GetInfo.name) + '\n')
tempFile.close()
main()
对于供应商列表,我将有一个字典,例如:
vendors = {"Cat:CatCity"}
我对下一步感到困惑,同时在尝试运行程序时也收到此错误:
"main.py", line 10, in main customerInfo = information.GetInfo(name,street,city,state,zipcode,birthday,pet)
NameError: name 'name' is not defined
解决方案
试试这个类:
class GetInfo:
def __init__(self,name,street,city,state,zipcode,birthday,pet):
self.inner_name = name
@property
def get_name(self):
return self.inner_name
@name.setter
def set_name(self, name):
self.inner_name = name
您不需要使用 getter 和 setter。在 python 中,您可以在没有它们的情况下访问对象的所有属性。另请参阅:使用 @property 与 getter 和 setter
您的代码中的实际问题是该行
tempFile.write( str(GetInfo.name) + '\n')
对象GetInfo
不是类的实例,而是类本身。并且该类没有属性name
。你的意思可能是:
tempFile.write( str(customerInfo.name) + '\n')
推荐阅读
- javascript - AngularJS/Spring:为什么 [$http:baddata] 错误仍然出现,即使数据已成功添加到数据库?
- r - 如何识别R中行的部分重复
- javascript - 在 Javascript 中向过滤器函数添加条件
- logarithm - 定点中的 Log2 近似
- checkbox - mat-checkbox 可以用作 matStepperNext 吗?
- python - 使用 python 将 .dbc 文件转换为 .csv
- kotlin - 如何从非挂起函数中获取当前的`coroutineContext`?
- elixir - 当源结构的键名与模式的列名不同时创建变更集?
- linux - 如何通过管道查找结果以解压缩?
- python - Pip 要求未安装