新人求助,总是报没有属性错误

lee22820000 2018-01-20 09:04:11
mport types

class Person(object): #基类必须继承于object,否则在派生类中将无法使用super()函数
def __init__(self, name = '', age = 20, sex = 'man'):
self.setName(name)
self.setAge(age)
self.setSex(sex)

def setName(self, name):
if not isinstance(name,str):
print('name must be string.')
return self.name == name

def setAge(self, age):
if not isinstance(age,int):
print('age must be integer.')
return self.age == age

def setSex(self, sex):
if sex != 'man' and sex != 'woman':
print('sex must be "man" or "woman"')
return self.sex == sex

def show(self):
print self.name

print self.age
print self.sex

class Student(Person):
def __init__(self, name='', age = 30, sex = 'man', major = 'Computer'):
super(Student, self).__init__(name, age, sex) #调用基类构造方法初始化基类的私有数据成员
self.setMajor(major)#初始化派生类的数据成员

def setMajor(self, major):
if not isinstance(major, str):
print('major must be a string.')
return self.major == major

def show(self):
super(Student, self).show()
print self.major

if __name__ =='__main__':Person,Student


求大神看看 谢谢
...全文
202 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lee22820000 2018-01-21
  • 打赏
  • 举报
回复
谢谢兄弟 我刚才是写错了,现在解决了要先赋值在return 的 因为看的是别人的文档 搞晕了
混沌鳄鱼 2018-01-20
  • 打赏
  • 举报
回复
要写成 self.name = name print self.name 建议楼主先学习一下基本的语法之类再撸代码。
lee22820000 2018-01-20
  • 打赏
  • 举报
回复
试过但是报格式错误 我是Python2.7 版本
兄弟 帮我看看 我觉得是使用self.setName(name) 这个方式有问题,谢谢指教
混沌鳄鱼 2018-01-20
  • 打赏
  • 举报
回复
把所有类似于 return self.name == name 改成 self.name = name 的形式

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧