python __new__,__name__,__bases__,__dict__
时间: 2024-02-12 07:01:21 浏览: 104
Python的__new__方法和__init__方法
__new__是一个特殊的静态方法,用于创建一个类的实例。它是在__init__方法之前调用的,用于创建并返回一个新的实例对象。__new__方法接收的参数是类本身和其他任意参数,返回一个新的实例对象。
__name__是一个特殊的属性,用于获取当前模块的名称。在一个模块中,__name__的值是字符串"__main__",表示该模块是主程序入口。在其他模块中,__name__的值是模块的名称。
__bases__是一个特殊的属性,用于获取一个类的所有基类。它返回一个元组,包含了该类的所有直接基类。
__dict__是一个特殊的属性,用于获取一个类或对象的所有属性和方法。它返回一个字典,包含了该类或对象的所有属性和方法的名称和值。
下面是一个演示例子:
```python
class MyClass:
def __new__(cls, *args, **kwargs):
print("__new__ is called")
return object.__new__(cls)
def __init__(self, x, y):
print("__init__ is called")
self.x = x
self.y = y
print("__name__:", __name__)
print("__bases__:", MyClass.__bases__)
print("__dict__:", MyClass.__dict__)
```
执行结果:
```
__name__: __main__
__bases__: (<class 'object'>,)
__dict__: {'__module__': '__main__', '__new__': <function MyClass.__new__ at 0x7f8e3e4e0d08>, '__init__': <function MyClass.__init__ at 0x7f8e3e4e0d90>, '__dict__': <attribute '__dict__' of 'MyClass' objects>, '__weakref__': <attribute '__weakref__' of 'MyClass' objects>}
```
阅读全文