上下文:
我开发了一个在远程linux服务器上运行的python脚本。使用python3.6.1运行。这个脚本可以工作,但是非常混乱,并且按照程序编写,与OO相反。所以,我把这个脚本重写成两个不同的类。一个主类和一个对象的blueprint类。在
我的剧本要复杂得多,我只是为了这个问题简化了它。在
所需功能:
从CSV文件读取值。从这些值创建对象,每行1个对象。对初始化对象(在objects类中)的值进行一些计算。让这些对象可以从主类(基类)访问。在
问题:
我需要澄清一下:主方法未运行。尝试了方法调用的变体,比如基本.main(),包括基类中的“if name”语句,并且它抱怨未定义self
“自我”参考。我的用法正确吗?例如:将属性“age”添加到Person对象中,以便可以使用人.年龄例如。我的方法调用“self.input_文件处理(Base.inputFilePath)“等等
脚本:import csv
class Person:
def calculate_age(self):
self.age = 2017 - self.birthYear
def __init__(self, name, birthYear):
self.name = self.strip_characters(self, name)
self.birthYear = int(birthYear)
self.calculate_age()
class Base:
inputFilePath = "input.csv"
people = []
def main():
self.input_file_handling(Base.inputFilePath)
#More methods here
@staticmethod
def input_file_handling(input_file_path):
input_file_path = str(input_file_path)
with open(input_file_path, 'r') as csv_file:
csv_reader = csv.DictReader(csv_file)
for line in csv_reader:
name = line['Name']
age = line['age']
person = Person(name, age)
people.append(person)
if __name__ == '__main__':
main()