在python的面向对象编程中,__class__是一个特殊的属性,它与类和实例相关,用于表示对象类信息。通过 class,你可以访问一个对象所属的类,或者获取类本身的元类信息。
1. __class__的作用
class 是python中的一个内置属性,用来表示类信息。
1)对于实例对象,__class__属性指向该实例所属的类。
2)对于类对象, __class__属性指向该类的元类(一般是type)。
实例对象:
python
class MyClass:
pass
# 创建实例
obj = MyClass()
# 访问实例的 __class__ 属性
print(obj.__class__) # 输出:<class '__main__.MyClass'>
在这个例子中,
obj
是MyClass
的一个实例,obj.__class__
返回MyClass
,表示obj
是MyClass
的实例。
类对象:
python
class MyClass:
pass
# 访问类对象的 __class__ 属性
print(MyClass.__class__) # 输出:<class 'type'>
在这个例子中,
MyClass
是一个类对象,它的__class__
属性返回type
,表示MyClass
是由type
元类创建的。
2.__class__的用法及底层运作
在这里我们创建两个类属性,首先one的变量是指向Money的类的,这里它们可以通过__class__,这个函数将one的指向变为指向Text类。
3.__class__与type()的区别
__class__和type()都可以用来获取对象的类型,但是存在一的区别:
1)class 是对象的一个属性,直接存储了对象的类信息。
2)type() 是一个内置函数,返回对象的类型。而对于普通对象,type(obj)和obj.__class__是等价的。
3)对于某些特殊对象(如元类或自定义元类的情况),type()和__class__的行为可能略有不同。
python
class MyClass:
pass
obj = MyClass()
print(obj.__class__) # 输出:<class '__main__.MyClass'>
print(type(obj)) # 输出:<class '__main__.MyClass'>
# 对于类对象
print(MyClass.__class__) # 输出:<class 'type'>
print(type(MyClass)) # 输出:<class 'type'>