Archerwan_ 发表于 2022-8-23 22:50:21

python中学习类和对象时遇到的问题

>>> class B(tuple):
        pass

>>> class B(list):
        pass

>>> b = B((1, 2, 3))
>>> b

>>> c = B("sun")
>>> c
['s', 'u', 'n']


向大神求助:请问在给B实例化对象时 b = B ( ) 括号内添加一个值是什么含义?;
还有就是 为什么我在括号内输入的是一个元组 怎么就变成了列表?求大佬告知
其中是如何运作的。谢谢!

asky533 发表于 2022-8-23 23:01:33

给b实例化对象时在括号里添加的是函数的参数。
而列表和元组基本上都是一样的,只是元组不能改变里面的数据。python为了方便改动就把他转换为列表了。
个人是这样理解的,勿喷

临时号 发表于 2022-8-23 23:04:00

class B(list)的意思是创建一个B类,继承于list这个类
也就是说,B此时拥有list的所有方法

B()的括号中填的内容是初始化B这个类的参数

因为B现在有了list类的所有方法,所以B((1,2,3))你可以把它暂时理解成list((1,2,3))

Archerwan_ 发表于 2022-8-24 09:33:13

临时号 发表于 2022-8-23 23:04
class B(list)的意思是创建一个B类,继承于list这个类
也就是说,B此时拥有list的所有方法



是不是将括号内的值作为 list.__init__方法里面的参数

Archerwan_ 发表于 2022-8-24 09:33:45

asky533 发表于 2022-8-23 23:01
给b实例化对象时在括号里添加的是函数的参数。
而列表和元组基本上都是一样的,只是元组不能改变里面的数 ...

谢谢你

临时号 发表于 2022-8-24 10:01:15

Archerwan_ 发表于 2022-8-24 09:33
是不是将括号内的值作为 list.__init__方法里面的参数

Archerwan_ 发表于 2022-8-24 10:06:26

临时号 发表于 2022-8-24 10:01


那list.__init__返回的值是什么 这种怎么查看啊 用了help也看不到他的返回值

临时号 发表于 2022-8-24 10:08:26

Archerwan_ 发表于 2022-8-24 10:06
那list.__init__返回的值是什么 这种怎么查看啊 用了help也看不到他的返回值

list.__init__没有返回值

Archerwan_ 发表于 2022-8-24 10:10:28

临时号 发表于 2022-8-24 10:08
list.__init__没有返回值

哦哦不好意思 我的意思是他接收了这个参数是用来干什么的

临时号 发表于 2022-8-24 10:21:53

Archerwan_ 发表于 2022-8-24 10:10
哦哦不好意思 我的意思是他接收了这个参数是用来干什么的

你知道list((1,2,3))它接收(1,2,3)这个元组用来干什么你就知道B((1,2,3))接收这个参数是用来干什么的了
当然是将(1,2,3)转化为了

Archerwan_ 发表于 2022-8-24 10:22:55

临时号 发表于 2022-8-24 10:21
你知道list((1,2,3))它接收(1,2,3)这个元组用来干什么你就知道B((1,2,3))接收这个参数是用来干什么的了
...

好的,明白了谢谢您
页: [1]
查看完整版本: python中学习类和对象时遇到的问题