一.类属性
1.类的属性 __dict__
类的 __dict__ 属性是一个字典,存储了类的属性和方法,包含了类的所有属性(包括类属性和方法)。
class Person:
age = 19
def __init__(self):
self.name = "sz"
def run(self):
print("run")
print(Person.__dict__)
输出结果:
{'__module__': '__main__', 'age': 19, '__init__': <function Person.__init__ at 0x000001E41E81F040>, 'run': <function Person.run at 0x000001E41E81F0D0>, '__dict__': <attribute '__dict__' of 'Person' objects>, '__weakref__': <attribute '__weakref__' of 'Person' objects>, '__doc__': None}
2.类的所有父类构成元组 __bases__
在 Python 中,__bases__
是一个类的属性,它是一个元组,包含该类的所有直接父类。通过 __bases__
,你可以查看类的直接继承关系。
class Person:
age = 19
def __init__(self):
self.name = "sz"
def run(self):
print("run")
print(Person.__bases__)
输出结果:
(<class 'object'>,)
3.类的文档字符串 __doc__
在 Python 中,__doc__
是一个特殊的内置属性,用于存储类、函数、模块等对象的文档字符串(docstring)。文档字符串是代码中用于描述对象功能和用法的字符串,通常位于对象定义的开头。
class Person:
"""
这是一个人,这样的类
"""
age = 19
def __init__(self):
self.name = "sz"
def run(self):
print("run")
print(Person.__doc__)
输出结果:
这是一个人,这样的类
4.类名 __name__
class Person:
"""
这是一个人,这样的类
"""
age = 19
def __init__(self):
self.name = "sz"
def run(self):
print("run")
print(Person.__name__)
输出结果:
Person
5.类定义所在的模块 __module__
__module__
是 Python 中类、函数或模块对象的一个内置属性,用于表示该对象定义所在的模块名称。通过 __module__
,你可以动态地获取某个类或函数所属的模块,这在调试、日志记录或动态加载模块时非常有用。
class Person:
"""
这是一个人,这样的类
"""
age = 19
def __init__(self):
self.name = "sz"
def run(self):
print("run")
print(Person.__module__)
输出结果:
__main__
二.实例属性
1.实例的属性 __dict__
实例的 __dict__ 是一个普通字典,存储了实例的属性。实例的 __dict__ 不包含方法,只包含实例函数。
class MyClass:
class_attr = "I am a class attribute"
def __init__(self, value):
self.instance_attr = value
def method(self):
return "I am a method"
obj = MyClass("Instance value")
# 查看实例的 __dict__
print(obj.__dict__)
输出结果:
{'instance_attr': 'Instance value'}
2.实例对应的类 __class__
在 Python 中,每个实例都有一个特殊的属性 __class__
,它指向实例所属的类。通过 __class__
,你可以获取实例的类定义,或者对类进行动态操作。
class Person:
"""
这是一个人,这样的类
"""
age = 19
def __init__(self):
self.name = "sz"
def run(self):
print("run")
p = Person()
print(p.__class__)
输出结果:
<class '__main__.Person'>