2013-09-01 28 views
2

如何摆脱这个NameErrorNameError on imported class

main.py

from com.domain.model import Employee 

e1 = Employee("") 

model.py

class Person(object): 
    def __init__(self,fname): 
     setfname(fname) 
    def setfname(fname): self._fname = fname 

class Employee(Person): 
    def __init__(self,fname): super(Employee,self).__init__(fname) 

NameError: global name 'setfname' is not defined


main.py

com/

- domain/

---- model.py

+0

Python不是Java ... –

回答

3

资格setfnameself.setfname。除此之外,实例方法setfname应该具有self作为第一个参数。

class Person(object): 
    def __init__(self, fname): 
     self.setfname(fname) 
    # ^^^^^ 
    def setfname(self, fname): 
    #   ^^^^^^ 
     self._fname = fname 
+0

是否可能创建个人使用类的函数? – GLES

+0

@GLES,我不明白**个人使用类**吗?你的意思是私人方法吗? – falsetru

+0

@GLES,如果你的意思是私有方法,请参阅[是否python在类中有'私有'变量](http://stackoverflow.com/questions/1641219/does-python-have-private-variables-in-classes)。 – falsetru

相关问题