鱼C论坛

 找回密码
 立即注册
查看: 2804|回复: 5

[已解决]python,关于类和对象的问题

[复制链接]
发表于 2018-11-30 21:01:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 hhzczy 于 2018-11-30 21:26 编辑
  1. class User():

  2.     def __init__(self, first_name, last_name, username, email):
  3.         self.first_name = first_name
  4.         self.last_name = last_name
  5.         self.username = username
  6.         self.email = email
  7.         self.title = self.first_name.title() + self.last_name.title()

  8.     def describe_user(self):
  9.         print(self.title)
  10.         print('Username: ' + self.username)
  11.         print('Email: ' + self.email)

  12.     def greet_user(self):
  13.         print('Welcome ' + self.title + '.')

  14. user1 = User('xueyou', 'zhang', 'ZhangGeShen', 'zxy@123.com')
  15. user1.describe_user()
  16. user1.greet_user()
复制代码


本楼上边代码已经修改正确,问题已经解决。感谢楼下各位的回复指正

最佳答案
2018-11-30 21:07:15
小错误不少,改正的:
  1. class User():

  2.     def __init__(self, first_name, last_name, username, email):
  3.         self.firstname = first_name
  4.         self.lastname = last_name
  5.         self.username = username
  6.         self.email = email

  7.     def describe_user(self):
  8.         print(self.firstname.title() + self.lastname.title())  #可以合并吗?
  9.         print('Username: ' + self.username)
  10.         print('Email: ' + self.email)

  11.     def greet_user(self):
  12.         print('Welcome ' + self.firstname.title() + self.lastname.title() + '.')   #可以合并吗?

  13. user1 = User('学友', '张', 'ZhangGeShen', 'zxy@123.com')
  14. user1.describe_user()   #这行报错 TypeError: describe_user() takes 0 positional arguments but 1 was given
  15. user1.greet_user()
复制代码


假设这是一行很复杂的代码,我想精简一下合并在一起(比如:在一个方法里写,另一个方法里直接调用,不必重复),如果可以该怎么写?
---写成函数
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-11-30 21:04:23 | 显示全部楼层
本帖最后由 塔利班 于 2018-11-30 21:07 编辑

1,你的函数都没有加self,那就不是实例对象的函数
2 你可以定义个属性self.title=self.firstname.title() + self.last.name.title()
     然后其他调用self.title就行了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-30 21:07:15 | 显示全部楼层    本楼为最佳答案   
小错误不少,改正的:
  1. class User():

  2.     def __init__(self, first_name, last_name, username, email):
  3.         self.firstname = first_name
  4.         self.lastname = last_name
  5.         self.username = username
  6.         self.email = email

  7.     def describe_user(self):
  8.         print(self.firstname.title() + self.lastname.title())  #可以合并吗?
  9.         print('Username: ' + self.username)
  10.         print('Email: ' + self.email)

  11.     def greet_user(self):
  12.         print('Welcome ' + self.firstname.title() + self.lastname.title() + '.')   #可以合并吗?

  13. user1 = User('学友', '张', 'ZhangGeShen', 'zxy@123.com')
  14. user1.describe_user()   #这行报错 TypeError: describe_user() takes 0 positional arguments but 1 was given
  15. user1.greet_user()
复制代码


假设这是一行很复杂的代码,我想精简一下合并在一起(比如:在一个方法里写,另一个方法里直接调用,不必重复),如果可以该怎么写?
---写成函数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-30 21:12:03 | 显示全部楼层
冬雪雪冬 发表于 2018-11-30 21:07
小错误不少,改正的:

感谢,帖子发出去,我就发现错误了。之前看了半天也没发现,很苦恼。
还是不太熟练。

一楼的帖子我已经修正过了,可以正常运行。
可否劳烦写个函数的范例。

我刚刚对类稍微理出一点点头绪(还有点浆糊)。在类里再加上函数就不知道怎么写了。望提示
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-30 21:17:54 | 显示全部楼层
hhzczy 发表于 2018-11-30 21:12
感谢,帖子发出去,我就发现错误了。之前看了半天也没发现,很苦恼。
还是不太熟练。

类中的函数,与其他函数没有什么差别,就是注意两点:
1.函数参数加self
2.变量名加self.
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-30 21:23:40 | 显示全部楼层
塔利班 发表于 2018-11-30 21:04
1,你的函数都没有加self,那就不是实例对象的函数
2 你可以定义个属性self.title=self.firstname.title() ...

非常感谢,问题已经解决。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-23 04:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表