Python 属性错误:';用户';对象没有属性';setFirstName';
我正在学习python。我得到了这个错误p1.setFirstName(“john”) AttributeError:“User”对象没有属性“setFirstName”。我没有得到我犯错误的地方。请帮助我解决此错误。我是lerning setter and getter方法。我调用了下面的方法,但它没有显示其属性。因此我不明白它的含义。 多谢各位 User.pyPython 属性错误:';用户';对象没有属性';setFirstName';,python,Python,我正在学习python。我得到了这个错误p1.setFirstName(“john”) AttributeError:“User”对象没有属性“setFirstName”。我没有得到我犯错误的地方。请帮助我解决此错误。我是lerning setter and getter方法。我调用了下面的方法,但它没有显示其属性。因此我不明白它的含义。 多谢各位 User.py import mysql.connector class User: def __init__(self): de
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)
1-所有方法都在
\uuuuu init\uuuu
2-getter必须将self
作为参数
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)
但是,在python中,您可以用以下内容替换所有这些getter和setter:
class User:
def __init__(self):
self.first_name = None
self.last_name = None
self.birth_date = None
self.marital_status = None
self.gender = None
self.height = None
self.valid_id_tyoe = None
self.valid_id_number = None
self.nationality = None
if __name__ == '__main__':
p1 = User()
p1.first_name = "john"
p1.last_name = "abrahum"
p1.birth_date = "1/1/1996"
p1.marital_status = "married"
p1.gender = "male"
p1.height = "5ft2inhces"
p1.valid_id_type = "pancard"
p1.valid_id_number = "123456"
name = p1.first_name
print(name)
以较小的例子为例
class Dog:
def __init__(self):
def bark():
print("Woof!")
这是有效的Python,工作正常,但不是您想要的。
函数bark
仅在\uuuuu init\uuuu
函数的范围内,您可以将该函数视为类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的惯例是使用snake-case而不是camel-case。如果你关心该领域的最佳实践,我也会看这篇文章 您是从另一种语言来到python的吗?根据缩进,所有方法都是在
\uuu init\uuu
中定义的。所以它们不能从实例级别访问是的,我是从java和php访问python的。谢谢你的帮助,但是如果我想按照前面提到的代码编写,那么我需要定义_init_uu之外的所有方法,如果我访问了这些方法,那么我将如何访问它?