鱼C论坛

 找回密码
 立即注册
查看: 3892|回复: 16

请教一下

[复制链接]
发表于 2020-1-26 15:48:55 | 显示全部楼层 |阅读模式

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

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

x
  1. class Boy:
  2.     def __init__(self,name,girlFriend=None):
  3.         self.name = name
  4.         self.girlFriend = girlFriend

  5.     def have_a_diner(self):
  6.         if self.girlFriend:
  7.             print('%s 和 %s 一起晚饭'%(self.name,self.girlFriend.name))
  8.         else:
  9.             print('单身狗,吃什么饭')


  10. class Girl:
  11.     def __init__(self,name):
  12.         self.name = name


  13. gg = Girl('小花')
  14. bb = Boy('wusir', gg)       #????
  15. bb.have_a_diner()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-1-26 15:49:53 | 显示全部楼层
本帖最后由 奔跑的少年丶 于 2020-1-26 15:51 编辑

上面打问号的地方为什么不是  slef.name。。。。并且直接换成“小花”  也不对   在Boy类里,girlFriend应该是接收字符串“小花”的吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-26 15:50:33 | 显示全部楼层
你想问什么?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-26 15:52:50 | 显示全部楼层

为什么把“小花”赋值给girlFriend  会报错呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-26 15:54:06 | 显示全部楼层
奔跑的少年丶 发表于 2020-1-26 15:52
为什么把“小花”赋值给girlFriend  会报错呢

        if self.girlFriend:
            print('%s 和 %s 一起晚饭'%(self.name,self.girlFriend.name))

由于字符串 "小花" 没有 name 属性,所以会报错。而 Girl 有 name 属性。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-26 15:54:15 | 显示全部楼层

gg不是  Girl的一个实例化对象吗 , girlFriend怎么能接收到“小花”这个字符串呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-26 15:56:07 | 显示全部楼层
奔跑的少年丶 发表于 2020-1-26 15:54
gg不是  Girl的一个实例化对象吗 , girlFriend怎么能接收到“小花”这个字符串呢

gg 的 name 属性为 "小花"
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-26 15:56:15 | 显示全部楼层
  1. >>> gg = Girl('小花')
  2. >>> bb = Boy('wusir', gg.name)
  3. >>> bb.have_a_diner()
  4. Traceback (most recent call last):
  5.   File "<pyshell#26>", line 1, in <module>
  6.     bb.have_a_diner()
  7. [color=Red] File "C:/Users/MVP/AppData/Local/Programs/Python/Python38-32/11.py", line 8, in have_a_diner
  8.     print('%s 和 %s 一起晚饭'%(self.name,self.girlFriend.name))
  9. AttributeError: 'str' object has no attribute 'name'
复制代码



换成gg.name  也是报错。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-26 16:03:33 | 显示全部楼层
奔跑的少年丶 发表于 2020-1-26 15:56
换成gg.name  也是报错。。。

因为 gg.name 是一个字符串:"小花",字符串没有属性"name"。
而 gg 这个实例化对象有。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-26 16:04:05 | 显示全部楼层
奔跑的少年丶 发表于 2020-1-26 15:56
换成gg.name  也是报错。。。

应该是 bb = Boy('wusir', gg),不要写 .name
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-26 16:07:28 | 显示全部楼层
一个账号 发表于 2020-1-26 16:03
因为 gg.name 是一个字符串:"小花",字符串没有属性"name"。
而 gg 这个实例化对象有。

gg的目的就是将“小花”赋值给girlFriend  为什么 我不通过gg  直接赋值 也不行啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-26 16:11:07 | 显示全部楼层
奔跑的少年丶 发表于 2020-1-26 16:07
gg的目的就是将“小花”赋值给girlFriend  为什么 我不通过gg  直接赋值 也不行啊


如果你要传进一个字符串就把.name去掉,改成这样:
  1. class Boy:
  2.     def __init__(self,name,girlFriend=None):
  3.         self.name = name
  4.         self.girlFriend = girlFriend

  5.     def have_a_diner(self):
  6.         if self.girlFriend:
  7.             print('%s 和 %s 一起晚饭'%(self.name,self.girlFriend))
  8.         else:
  9.             print('单身狗,吃什么饭')

  10. bb = Boy('wusir', '小花')
  11. bb.have_a_diner()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-26 16:11:58 | 显示全部楼层
zltzlt 发表于 2020-1-26 16:04
应该是 bb = Boy('wusir', gg),不要写 .name

girlFriend  如何能够接收到 bb = Boy('wusir', gg)  中gg对应的 .name属性啊。。。就这点 把我给整晕了,,,,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-26 16:12:24 | 显示全部楼层
本帖最后由 zltzlt 于 2020-1-26 16:14 编辑
奔跑的少年丶 发表于 2020-1-26 16:07
gg的目的就是将“小花”赋值给girlFriend  为什么 我不通过gg  直接赋值 也不行啊


应该将 have_a_diner 中的 self.girlFriend.name 中的 .name 去掉。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-26 16:12:57 | 显示全部楼层
奔跑的少年丶 发表于 2020-1-26 16:11
girlFriend  如何能够接收到 bb = Boy('wusir', gg)  中gg对应的 .name属性啊。。。就这点 把我给整晕了 ...

小花是从这里来的:

print('%s 和 %s 一起晚饭'%(self.name,self.girlFriend.name))
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-26 16:30:55 | 显示全部楼层
一个账号 发表于 2020-1-26 16:11
如果你要传进一个字符串就把.name去掉,改成这样:

懂了 懂了 谢谢  我没注意到self.girlFriend.name  后边的 .name     girlFriend就是要接收 实例化对象。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-26 16:33:06 | 显示全部楼层
zltzlt 发表于 2020-1-26 16:12
小花是从这里来的:

print('%s 和 %s 一起晚饭'%(self.name,self.girlFriend.name))

谢谢  我看懂了。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-21 23:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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