"无法分配到功能调用" Python错误

时间:2016-07-07 08:20:01

标签: python

import sys
import os.path

class Juvenile(object):
    def createJuv(self, pop, rate):
        self.pop = pop
        self.rate = rate
    def displayJuvpop(self):
        return self.pop
    def displayjuvRate(self):
        return self.rate

class Adult(object):
    def createAd(self, pop, rate, brate):
        self.pop = pop
        self.rate = rate
        self.brate = brate
    def displayAdpop(self):
        return self.pop
    def displayAdRate(self):
        return self.rate
    def displayBirthrate(self):
        return self.brate

class Senile(object):
    def createSe(self, pop, rate):
        self.pop = pop
        self.rate = rate
    def displaySepop(self):
        return self.pop
    def displaySerate(self):
        return self.rate


a = Juvenile()
b = Adult()
c = Senile()
`enter code here`pop_model = raw_input("Enter the number of generations: ")
`enter code here`pop_model = int(pop_model)
newjuv = 0
newsen = 0
newadu = 0

def menu():
    This = True
    while This == True:
        print("1) Enter Generation 0 values")
        print("2) Display Generation 0 values")
        print("3) Run the model")
        print("4) Export data")
        print("5) Quit")
        decision = raw_input("")
        if decision == "1":
            Gen0values()
        elif decision == "2":
            display()
        elif decision == "3":
            run()
        elif decision == "4":
            export()
        elif decision == "5":
            sys.exit()

def run():
    print("Juvenile" + " " + "Adult" + " " + "Senile")
    for i in range(0, pop_model):
        newjuv = b.displayAdpop()* b.displayBirthrate()
        newsen = b.displayAdpop() * b.displayAdRate()
        newadu = a.displayJuvpop() * a.displayjuvRate()

        print(i + 1,newjuv, newadu,newsen)

        a.displayJuvpop() = newjuv
        b.displayAdpop() = newsen
        c.displaySepop() = newadu


def Gen0values():
    a.createJuv(float(raw_input("Enter the juvenile population: ")), float(raw_input("Enter the Juvenile survival rate: ")))
    b.createAd(float(raw_input("Enter the Adult population: ")), float(raw_input("Enter the Adult survival rate: ")), float(raw_input("Enter the birth rate: ")))
    c.createSe(float(raw_input("Enter the Senile population: ")), float(raw_input("Enter the Senile survival rate: ")))


menu()

错误出现在这里:

    def run():
    print("Juvenile" + " " + "Adult" + " " + "Senile")
    for i in range(0, pop_model):
        newjuv = b.displayAdpop()* b.displayBirthrate()
        newsen = b.displayAdpop() * b.displayAdRate()
        newadu = a.displayJuvpop() * a.displayjuvRate()

        print(i + 1,newjuv, newadu,newsen)

        a.displayJuvpop() = newjuv
        b.displayAdpop() = newsen
        c.displaySepop() = newadu

出现错误"无法分配到功能调用,第60行和第34行。由于堆栈溢出的代码到文本限制,我删除了不相关的程序部分,如导出数据和显示值。

Ps:这不是缩进错误,复制和粘贴有点中断它。

1 个答案:

答案 0 :(得分:1)

您的display*pop()函数返回,而不是变量。您无法分配该功能结果。只需直接分配属性:

a.pop = newjuv
b.pop = newsen
c.pop = newadu