鱼C论坛

 找回密码
 立即注册
查看: 1405|回复: 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-9 10:35:41 From FishC Mobile | 显示全部楼层
要发文本代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-9 11:36:29 | 显示全部楼层
class MyClass:
        name = 'FishC'
        def myFun(self):
                print("Hello FishC!")
                
>>> MyClass.name
'FishC'
>>> MyClass.myFun()
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    MyClass.myFun()
TypeError: myFun() missing 1 required positional argument: 'self'
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

需要绑定才能使用啊!
得先:
myclass = MyClass()
myclass.myFun()
除非你去掉类在定义中的 self !
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

        
my = MyClass()
type(my)
<class '__main__.MyClass'>
my.myFun()
Hello FishC!
my = MyClass
type(my)
<class 'type'>
my.myFun()
Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    my.myFun()
TypeError: MyClass.myFun() missing 1 required positional argument: 'self'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

感谢感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 03:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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