面向对象类的特殊成员方法
Posted q1ang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象类的特殊成员方法相关的知识,希望对你有一定的参考价值。
1. __doc__:表示类的描述信息
class Foo(object): ‘‘‘ 描述信息 ‘‘‘ def func(self): pass print(Foo.__doc__) >>>描述信息
2. __module__ 和 __class__ :
__module__ 表示当前操作的对象在哪个个模块
__class__ 表示当前操作的对象的类是什么
3. __init__ :构造方法,通过类创建对象时,自动触发执行
4.__del__: 析构方法,当对象在内存中被释放时,自动触发执行
5. __call__ :对象后面加括号,触发执行
class Foo(object): ‘‘‘ 描述信息 ‘‘‘ def __call__(self, *args, **kwargs): print(‘call‘) a=Foo()# 执行 __init__
a()# 执行 __call__
>>>call
6. __dict__ :查看类或对象中的所有成员
通过类调用:打印类的所有属性,不包括实例属性
class Foo(object): def __init__(self,name,age): self.name=name self.age=age def func(self): print(‘this is a function‘) print(Foo.__dict__) >>> {‘__module__‘: ‘__main__‘, ‘__init__‘: <function Foo.__init__ at 0x02FACBB8>, ‘func‘: <function Foo.func at 0x02FACB70>, ‘__dict__‘: <attribute ‘__dict__‘ of ‘Foo‘ objects>, ‘__weakref__‘: <attribute ‘__weakref__‘ of ‘Foo‘ objects>, ‘__doc__‘: None}
通过实例调用:打印所有实例属性,不包括类属性
f=Foo(‘q1ang‘,25) print(f.__dict__) >>> {‘name‘: ‘q1ang‘, ‘age‘: 25}
7.__str__: 如果一个类中定义了__str__方法,那么在打印 对象 时,默认输出该方法的返回值
class Foo(object): def __init__(self,name,age): self.name=name self.age=age def __str__(self): print(‘this is a function‘) return ‘return‘ f=Foo(‘q1ang‘,25) print(f) >>> this is a function return
8.__getitem__、__setitem__、__delitem__:
用于索引操作,如字典。以上分别表示获取、设置、删除数据
class Foo(object): def __getitem__(self, key):#获取 print(‘__getitem__‘, key) def __setitem__(self, key, value):#设置 print(‘__setitem__‘, key, value) def __delitem__(self, key):#删除 print(‘__delitem__‘, key) obj = Foo() result = obj[‘k1‘] # 自动触发执行 __getitem__ obj[‘k2‘] = ‘q1ang‘ # 自动触发执行 __setitem__ del obj[‘k1‘] >>> __getitem__ k1 __setitem__ k2 q1ang __delitem__ k1
9. __new__ \ __metaclass__:
以上是关于面向对象类的特殊成员方法的主要内容,如果未能解决你的问题,请参考以下文章
面向对象day08:类的特殊成员-类的起源与metaclass