| 
                         这两者也是Python内建,无需自定义。 
- class Foo: 
 -     pass 
 - obj = Foo() 
 - print(obj.__module__) 
 - print(obj.__class__) 
 
  
运行结果: 
- main 
 
  
4. del() 
析构方法,当对象在内存中被释放时,自动触发此方法。 
注:此方法一般无须自定义,因为Python自带内存分配和释放机制,除非你需要在释放的时候指定做一些动作。析构函数的调用是由解释器在进行垃圾回收时自动触发执行的。 
- class Foo: 
 -     def __del__(self): 
 -         print("我被回收了!") 
 -  
 - obj = Foo() 
 - del obj 
 
  
5. call() 
如果为一个类编写了该方法,那么在该类的实例后面加括号,可会调用这个方法。 
注:构造方法的执行是由类加括号执行的,即:对象 = 类名(),而对于call() 方法,是由对象后加括号触发的,即:对象() 或者 类()() 
- class Foo: 
 -     def __init__(self): 
 -         pass 
 -     def __call__(self, *args, **kwargs): 
 -         print('__call__') 
 - obj = Foo()     # 执行 __init__ 
 - obj()       # 执行 __call__ 
 
  
可以用Python内建的callable()函数进行测试,判断一个对象是否可以被执行。 
- callable(Student()) 
 
  
运行结果: 
- True 
 
  
6. dict 
列出类或对象中的所有成员!非常重要和有用的一个属性,Python自建,无需用户自己定义。 
- class Province: 
 -     country = 'China' 
 -     def __init__(self, name, count): 
 -         self.name = name 
 -         self.count = count 
 -     def func(self, *args, **kwargs): 
 -         print('func') 
 - # 获取类的成员 
 - print(Province.__dict__) 
 - # 获取 对象obj1 的成员  
 - obj1 = Province('HeBei',10000) 
 - print(obj1.__dict__) 
 - # 获取 对象obj2 的成员  
 - obj2 = Province('HeNan', 3888) 
 - print(obj2.__dict__) 
 
  
7. str() 
如果一个类中定义了str()方法,那么在打印对象时,默认输出该方法的返回值。这也是一个非常重要的方法,需要用户自己定义。 
下面的类,没有定义str()方法,打印结果是: 
- class Foo: 
 -     pass 
 - obj = Foo() 
 - print(obj) 
 - 定义了__str__()方法后,打印结果是:'jack'。 
 - class Foo: 
 -     def __str__(self): 
 -         return 'jack' 
 - obj = Foo() 
 - print(obj) 
 
  
8、getitem__()、_setitem_()、__delitem() 
取值、赋值、删除这“三剑客”的套路,在Python中,我们已经见过很多次了,比如前面的@property装饰器。 
Python中,标识符后面加圆括号,通常代表执行或调用方法的意思。而在标识符后面加中括号[],通常代表取值的意思。Python设计了getitem()、setitem()、delitem()这三个特殊成员,用于执行与中括号有关的动作。它们分别表示取值、赋值、删除数据。 
也就是如下的操作: 
- a = 标识符[] : 执行__getitem__方法 
 - 标识符[] = a  : 执行__setitem__方法 
 - del 标识符[] : 执行__delitem__方法 
 
  
如果有一个类同时定义了这三个魔法方法,那么这个类的实例的行为看起来就像一个字典一样,如下例所示: 
- class Foo: 
 -     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'] = 'jack'      # 自动触发执行 __setitem__ 
 - del obj['k1']             # 自动触发执行 __delitem__ 
 
  
9. iter()                         (编辑:我爱故事小小网_铜陵站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |