我正在学习python。出现此错误p1.setFirstName(“ john”) AttributeError:'User'对象没有属性'setFirstName'我没有弄错我在哪里。请帮助我解决此错误。我使用setter和getter方法。我在下面调用了该方法,但显示了它不是attribute.so我很困惑这意味着什么。 谢谢。
User.py
import mysql.connector
class User:
def __init__(self):
def setFirstName(self,new_firstname):
self._FirstName = new_firstname
def setLastName(self,new_lastname):
self._LastName = new_lastname
def setBirthdate(self,new_birthdate):
self._Birthdate = new_birthdate
def setMartialStatus(self,new_martialstatus):
self._MartialStatus = new_martialstatus
def setGender(self,new_gender):
self._Gender = new_gender
def setHeight(self,new_height):
self._Height = new_height
def setValidIdType(self,new_valididtype):
self._ValidIdType = new_valididtype
def setValidIdNumber(self,new_valididnumber):
self._ValidIdNumber = new_valididnumber
def setNationality(self,new_nationality):
self._Nationality = new_nationality
def getFirstName():
return self._FirstName
def getLastName():
return self._LastName
def getBirthdate():
return self._Birthdate
def getMartialStatus():
return self._MartialStatus
def getGender():
return self._Gender
def getHeight():
return self._Height
def getValidIdType():
return self._ValidIdType
def getValidIdNumber():
return self._ValidIdNumber
def getNationality():
return self._Nationality
p1=User()
p1.setFirstName("john")
p1.setLastName("abrahum")
p1.setBirthdate("1/1/1996")
p1.setMartialStatus("married")
p1.setGender("male")
p1.setHeight("5ft2inhces")
p1.setValidIdType("pancard")
p1.setValidIdNumber("123456")
p1.setNationality("Indian")
name=p1.getFirstName()
print(name)
答案 0 :(得分:2)
考虑较小的示例,
class Dog:
def __init__(self):
def bark():
print("Woof!")
这是有效的Python,可以正常工作,但不是您想要的。
函数bark
仅存在于__init__
函数的范围内,您可以将其视为类Dog
的构造函数。为了使狗吠,您需要这样做。
class Dog:
def __init__(self):
def bark():
print("Woof!")
bark()
就您而言,我想您打算这样做。
class User:
def __init__(self):
# set this first in case the user
# tries to `get` before setting
self.first_name = ''
def set_first_name(self, name):
self.first_name = name
def get_first_name(self):
return self.first_name
注意,python的约定是使用蛇形而不是驼峰式。如果您担心该领域的最佳做法,我也会在python @property vs getters and setters上查看这篇文章!
答案 1 :(得分:1)
1-您的所有方法都在public List<Tto> Serialize<Tfrom, Tto>(
IEnumerable<IFinalOutput> outputTableCompositeViewModel)
{
List<Tto> sourceSystemDTOList = new List<Tto>();
AutoMapper.Mapper.Initialize(cfg => cfg.CreateMap<Tfrom, Tto>());
foreach (var item in outputTableCompositeViewModel)
{
Tto outputItem = new Tto();
var outputTableItem = item.MainOutput;
outputItem = AutoMapper.Mapper.Map<Tto>(outputTableItem);
var supportTableItem = item.SupportOuput;
var calculatedTableItem = item.CalcOutput;
sourceSystemDTOList.Add(outputItem);
}
return new List<Tto>(sourceSystemDTOList);
}
2-您的吸气剂必须将__init__
作为参数
self
但是,在python中,您可以方便地将所有这些getter和setter替换为:
class User:
def setFirstName(self, new_firstname):
self._FirstName = new_firstname
def setLastName(self, new_lastname):
self._LastName = new_lastname
def setBirthdate(self, new_birthdate):
self._Birthdate = new_birthdate
def setMartialStatus(self, new_martialstatus):
self._MartialStatus = new_martialstatus
def setGender(self, new_gender):
self._Gender = new_gender
def setHeight(self, new_height):
self._Height = new_height
def setValidIdType(self, new_valididtype):
self._ValidIdType = new_valididtype
def setValidIdNumber(self, new_valididnumber):
self._ValidIdNumber = new_valididnumber
def setNationality(self, new_nationality):
self._Nationality = new_nationality
def getFirstName(self):
return self._FirstName
def getLastName(self):
return self._LastName
def getBirthdate(self):
return self._Birthdate
def getMartialStatus(self):
return self._MartialStatus
def getGender(self):
return self._Gender
def getHeight(self):
return self._Height
def getValidIdType(self):
return self._ValidIdType
def getValidIdNumber(self):
return self._ValidIdNumber
def getNationality(self):
return self._Nationality
if __name__ == '__main__':
p1 = User()
p1.setFirstName("john")
p1.setLastName("abrahum")
p1.setBirthdate("1/1/1996")
p1.setMartialStatus("married")
p1.setGender("male")
p1.setHeight("5ft2inhces")
p1.setValidIdType("pancard")
p1.setValidIdNumber("123456")
p1.setNationality("Indian")
name = p1.getFirstName()
print(name)