AttributeError:“用户”对象没有属性“ setFirstName”

时间:2018-07-22 07:21:54

标签: python

我正在学习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)

2 个答案:

答案 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)