鱼C论坛

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

[已解决]类型的区别

[复制链接]
发表于 2023-8-15 12:34:53 | 显示全部楼层 |阅读模式

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

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

x
啊啊,b和B的区别是啥,B的类型到底是啥
>>> class a:
        x = 520
        def hello(self):
                print('你好')

                
>>> class b(a):
        pass
>>> B = b()
>>> B.x
520
>>> B.hello ()
你好
>>> type(b)
<class 'type'>
>>> type(B)
<class '__main__.b'>
最佳答案
2023-8-15 12:35:09
b和B的区别是b是一个类,而B是b类的一个实例对象。

b的类型是type,表示它是一个类对象。

B的类型是__main__.b,表示它是b类的一个实例对象。

在Python中,类是对象的模板,可以创建多个对象实例。b是类对象,B是b类的一个实例对象。类对象定义了类的属性和方法,实例对象可以通过类对象继承属性和方法,并可以调用这些属性和方法。

在给定的代码中,类a定义了一个属性x和一个方法hello。类b继承了类a,并没有定义新的属性和方法。实例对象B可以访问继承自类a的属性x和方法hello。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-15 12:35:09 | 显示全部楼层    本楼为最佳答案   
b和B的区别是b是一个类,而B是b类的一个实例对象。

b的类型是type,表示它是一个类对象。

B的类型是__main__.b,表示它是b类的一个实例对象。

在Python中,类是对象的模板,可以创建多个对象实例。b是类对象,B是b类的一个实例对象。类对象定义了类的属性和方法,实例对象可以通过类对象继承属性和方法,并可以调用这些属性和方法。

在给定的代码中,类a定义了一个属性x和一个方法hello。类b继承了类a,并没有定义新的属性和方法。实例对象B可以访问继承自类a的属性x和方法hello。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-8-15 12:42:25 | 显示全部楼层
本帖最后由 歌者文明清理员 于 2023-8-15 12:46 编辑

b 继承 a, 但是 b 的定义部分是 pass (pass 是一个占位符,避免 Python 语法报错), 所以 b 等同于 a (使用属性、方法时), 但是 isinstance() 等函数时会识别 B 是 a 的实例。

b 是类, B 是实例。b 规定了所有实例 (比如 B) 应该有哪些属性。

B 的类型是 b, 因为 Python 把当前文件叫做 __main__, 且 Python 在打印一个非 Python 自带类时会输出是哪个模块 (文件), 所以输出 <type '__main__.b'>。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-15 14:41:30 | 显示全部楼层
isdkz 发表于 2023-8-15 12:35
b和B的区别是b是一个类,而B是b类的一个实例对象。

b的类型是type,表示它是一个类对象。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 19:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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