不枉风来水顺 发表于 2023-8-15 12:34:53

类型的区别

啊啊,b和B的区别是啥,B的类型到底是啥{:5_104:}

>>> 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'>

isdkz 发表于 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。

歌者文明清理员 发表于 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'>。

不枉风来水顺 发表于 2023-8-15 14:41:30

isdkz 发表于 2023-8-15 12:35
b和B的区别是b是一个类,而B是b类的一个实例对象。

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


谢{:9_225:}
页: [1]
查看完整版本: 类型的区别