波大大12138 发表于 2020-6-16 16:33:14

看了答案解析还是没明白这代码错误的原因


<p>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'
>>></p><p>还是没有明白Myclass.myfun()那里为什么会报错?答案没看懂
</p>

heidern0612 发表于 2020-6-16 16:42:40

错误提示你了,你少传一个关键遍历self。

MyClass.myFun() ,你在调用Myclass这个类的时候,没往里传self的值。

类中的函数并不支持这种单独调用,除非你把类里的self去掉。

去掉了,也就不是类函数了,而是普通的函数了。

波大大12138 发表于 2020-6-16 16:52:04

heidern0612 发表于 2020-6-16 16:42
错误提示你了,你少传一个关键遍历self。

MyClass.myFun() ,你在调用Myclass这个类的时候,没往里传sel ...


a=MyClass()
>>> a.myfun()

那·为什么这样就可以呢?这也没看到什么时候往里传了self的值了啊

波大大12138 发表于 2020-6-16 17:08:59

波大大12138 发表于 2020-6-16 16:52
那·为什么这样就可以呢?这也没看到什么时候往里传了self的值了啊

@Twilight6

heidern0612 发表于 2020-6-16 18:26:00

波大大12138 发表于 2020-6-16 16:52
那·为什么这样就可以呢?这也没看到什么时候往里传了self的值了啊

你传的self不就是实例对象吗?

你实例化了,当然可以调用了啊。

波大大12138 发表于 2020-6-17 09:39:11

heidern0612 发表于 2020-6-16 18:26
你传的self不就是实例对象吗?

你实例化了,当然可以调用了啊。

你好,可以解释下实例对象和实例化的概念和区别吗?这两点没有搞懂,不太清楚

heidern0612 发表于 2020-6-17 09:48:02

波大大12138 发表于 2020-6-17 09:39
你好,可以解释下实例对象和实例化的概念和区别吗?这两点没有搞懂,不太清楚

你实例化的对象就是实例对象...(类相当图纸,实例化想当你根据图纸造出的东西。)

在你类定义中,类函数中的self指的就是你类实例化后的对象。

你可以理解为定义函数的时候,函数需要往里传值。

类也跟函数相似,只不过类的实例化多了一步,需要把你实例对象也传到类中,也就是那个self。
页: [1]
查看完整版本: 看了答案解析还是没明白这代码错误的原因