星河主炮 发表于 2020-5-1 19:25:45

求解一个关于class类与实例对象之间关系的问题

class Ball:
       
        def setName(self,name):

                self.name = name

        def kick(self):

                print('还踢%s?'%self.name)


定义了一个类Ball

然后我在调用时出现问题……

a = Ball

a.setName('头盖骨')

提示TypeError: setName() missing 1 required positional argument: 'name'

然后我尝试着加上‘name'……

a.setName(a,'头盖骨')

这样就能运行了,但麻烦还没结束……

然后我尝试着输入:

b = Ball

b.setName(b,'土豆')

b.kick()

提示TypeError: kick() missing 1 required positional argument: 'self'

既然它要‘self’,那我就加一个试试:

b.kick(b)

输出‘还踢土豆?’

但是问题还没结束……

继续输入:

a.kick(a)

顺利地输出‘还踢头盖骨?’

此时再次输入:

b.kick(b)

依旧输出‘还踢头盖骨?’



求助问题如下:

1.从py332到py382,是语法改变了么?

2.不是说这样调用class会产生不同的实例对象么?为什么不同的实例对象之间还会互相冲掉原值?

redforce 发表于 2020-5-1 19:42:58

对象实例化的时候需要括弧吧
a = Ball()
a.setName('头盖骨')
a.kick()

永恒的蓝色梦想 发表于 2020-5-1 19:44:55

a = Ball根本没实例化

星河主炮 发表于 2020-5-1 19:53:20

redforce 发表于 2020-5-1 19:42
对象实例化的时候需要括弧吧
a = Ball()
a.setName('头盖骨')


原来如此,少一个()
页: [1]
查看完整版本: 求解一个关于class类与实例对象之间关系的问题