yz7268913 发表于 2020-7-22 23:52:07

类问题求助

>>> class Fish:
        def __init__(self,x):
                self.num = x
       
>>> a = Fish(3)
>>> a.num
3

这里a.num为什么是一个方法

不应该是def num(self,x):
                return x
这么写吗

Twilight6 发表于 2020-7-22 23:54:22



这里a.num为什么是一个方法?

这里的 num 是 a 实例对象的 实例属性,而不是方法,你可能是对 a.num 有误解,这只是调用 a 实例对象的 num 属性

方法是你下面说的:
def num(self,x):
    return x

这样才是定义 num 方法

yz7268913 发表于 2020-7-23 00:05:03

Twilight6 发表于 2020-7-22 23:54
这里的 num 是 a 实例对象的 实例属性,而不是方法,你可能是对 a.num 有误解,这只是调用 a 实例 ...

这里a.num是a这个实例化对象的一个变量
只是通过__init__的来通过x参数,传入一个给num初始的一个值
这样理解对吗

Twilight6 发表于 2020-7-23 00:05:43

yz7268913 发表于 2020-7-23 00:05
这里a.num是a这个实例化对象的一个变量
只是通过__init__的来通过x参数,传入一个给num初始的一个值
这 ...


没错

yz7268913 发表于 2020-7-23 00:09:42

Twilight6 发表于 2020-7-22 23:54
这里的 num 是 a 实例对象的 实例属性,而不是方法,你可能是对 a.num 有误解,这只是调用 a 实例 ...

所以小结一下,“实例化对象”.“x”,这个x可能是类的一个属性(变量),也可能是一个方法
所以也就是为什么一般用名词来命名属性,而用动词来命名方法
对不对

Twilight6 发表于 2020-7-23 00:12:31

yz7268913 发表于 2020-7-23 00:09
所以小结一下,“实例化对象”.“x”,这个x可能是类的一个属性(变量),也可能是一个方法
所以也就是为 ...


嗯 可以这么说吧, 如果你类中定义了 x 方法, 此时 实例化对象.x 返回的是 x 函数体,而不是调用 x 函数,调用函数 实例化对象.x() 时候要加上括号哈

yz7268913 发表于 2020-7-23 00:13:46

yz7268913 发表于 2020-7-23 00:09
所以小结一下,“实例化对象”.“x”,这个x可能是类的一个属性(变量),也可能是一个方法
所以也就是为 ...

自我纠正。。。方法后面要加()的,因为是函数。
好南啊
页: [1]
查看完整版本: 类问题求助