鱼C论坛

 找回密码
 立即注册
查看: 1548|回复: 6

[已解决]关于如何实例化类的问题

[复制链接]
发表于 2022-3-9 10:30:16 | 显示全部楼层 |阅读模式

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

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

x
第37讲第5题的代码出错原因小甲鱼说的是未实例化调用方法缺少self参数。
问题1.如何添加self参数使程序成功运行?
问题2.如何将类MyClass实例化,从而成功运行程序?
最佳答案
2022-3-9 11:55:01
pengdonghan 发表于 2022-3-9 11:45
我试着将MyClass实例化,发现后面加括号就可以输出方法,不加括号还是会报错。
请问加括号与否,对MyClass ...

加括号是指将这个类的类对象传递给 my,形成实例对象,是可调用的,
而不加括号就是指将这个类本身传递给 my,又因为有 self 绑定,所以无法调用!
你后面小甲鱼就会讲到这三个类型了:类,类对象,实例对象!
1.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-3-9 10:35:41 From FishC Mobile | 显示全部楼层
要发文本代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-9 11:36:29 | 显示全部楼层
  1. class MyClass:
  2.         name = 'FishC'
  3.         def myFun(self):
  4.                 print("Hello FishC!")
  5.                
  6. >>> MyClass.name
  7. 'FishC'
  8. >>> MyClass.myFun()
  9. Traceback (most recent call last):
  10.   File "<pyshell#6>", line 1, in <module>
  11.     MyClass.myFun()
  12. TypeError: myFun() missing 1 required positional argument: 'self'
  13. >>>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-9 11:41:05 | 显示全部楼层

需要绑定才能使用啊!
得先:
  1. myclass = MyClass()
  2. myclass.myFun()
复制代码

除非你去掉类在定义中的 self !
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-9 11:45:00 | 显示全部楼层
我试着将MyClass实例化,发现后面加括号就可以输出方法,不加括号还是会报错。
请问加括号与否,对MyClass的类型有什么影响
  1. class MyClass:
  2.     name = 'FishC'
  3.     def myFun(self):
  4.         print("Hello FishC!")

  5.         
  6. my = MyClass()
  7. type(my)
  8. <class '__main__.MyClass'>
  9. my.myFun()
  10. Hello FishC!
  11. my = MyClass
  12. type(my)
  13. <class 'type'>
  14. my.myFun()
  15. Traceback (most recent call last):
  16.   File "<pyshell#15>", line 1, in <module>
  17.     my.myFun()
  18. TypeError: MyClass.myFun() missing 1 required positional argument: 'self'
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-9 11:55:01 | 显示全部楼层    本楼为最佳答案   
pengdonghan 发表于 2022-3-9 11:45
我试着将MyClass实例化,发现后面加括号就可以输出方法,不加括号还是会报错。
请问加括号与否,对MyClass ...

加括号是指将这个类的类对象传递给 my,形成实例对象,是可调用的,
而不加括号就是指将这个类本身传递给 my,又因为有 self 绑定,所以无法调用!
你后面小甲鱼就会讲到这三个类型了:类,类对象,实例对象!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-9 11:58:40 | 显示全部楼层
python爱好者. 发表于 2022-3-9 11:55
加括号是指将这个类的类对象传递给 my,形成实例对象,是可调用的,
而不加括号就是指将这个类本身传递 ...

感谢感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 02:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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