首页 > 解决方案 > 从文本文件分配 set/get 方法

问题描述

我对 Python 比较陌生(约 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

标签: python

解决方案


试试这个类:

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')

推荐阅读