鱼C论坛

 找回密码
 立即注册
查看: 1409|回复: 3

[已解决]一个关于重写__init__()函数的疑惑

[复制链接]
发表于 2018-4-10 11:04:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
两段代码如下:
1.
class Word1(str):
    def __init__(self,x):
        self.x = x
2.
class Word2():
    def __init__(self,x):
        self.x = x
用Word1进行实例化的时候,w1 = Word1("abc"), 此时w1的值是abc.
而Word2由于没有继承str类,w2 = Word2("abc"),  w2的值是<__main__.Word object at 0x0585E890>
麻烦大神解答下,w1和w2这两个实例化对象的值,分别是怎么得到的


最佳答案
2018-4-10 11:25:09
第一个因为继承了str,所以可以将字符串作为初始化对象赋给Word1的实例化对象,所以w1可以被认为就是一个str(有str对象的方法)
第二个没有继承str,当你把一个字符串作为参数去初始化该类对象的时候,w2此时只是一个Word2的实例化对象而已,并不具有str类的方法,只是有一个属性x是str
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-4-10 11:25:09 | 显示全部楼层    本楼为最佳答案   
第一个因为继承了str,所以可以将字符串作为初始化对象赋给Word1的实例化对象,所以w1可以被认为就是一个str(有str对象的方法)
第二个没有继承str,当你把一个字符串作为参数去初始化该类对象的时候,w2此时只是一个Word2的实例化对象而已,并不具有str类的方法,只是有一个属性x是str
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-10 13:29:45 | 显示全部楼层
BngThea 发表于 2018-4-10 11:25
第一个因为继承了str,所以可以将字符串作为初始化对象赋给Word1的实例化对象,所以w1可以被认为就是一个st ...

多谢哈,请问你知道是str对象的哪个方法会将Word1的实例化对象赋值为abc的么
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-10 13:33:04 | 显示全部楼层
潇湘慕风 发表于 2018-4-10 13:29
多谢哈,请问你知道是str对象的哪个方法会将Word1的实例化对象赋值为abc的么

__new__
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-10 08:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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