初始类与对象

print("hello 元类")

"""
定义: python中所有类都继承 object类

传统的类是由谁来创建的?
 答案:是通过type来创建的
 
一、传统类的创建:如下
    participant 用户调用
    participant __new__
    participant __init__
    用户调用->>__new__: Dog("旺财")
    __new__->>父类__new__: 创建实例
    父类__new__-->>__new__: 返回实例
    __new__->>__init__: 传递参数
    __init__->>实例对象: 初始化属性
"""
class Dog():
    """
    TODO  new函数是静态函数,创建对象  必须有返回,否则init对象不会执行
    TODO 参数1 cls代表类本身
    TODO 参数2 *args 接收所有位置参数
    TODO 参数3 **kwargs 接收所有关键字参数
    """
    def __new__(cls,*args,**kwargs):
        print(" 执行了Dog的new函数 创建对象")
        return super().__new__(cls)

    """
    TODO init初始化函数
    TODO 参数1 self 代表实例对象
    TODO 参数N... 执行Dog(..需要传递的参数)
    """
    def __init__(self,name):
        self.name=name
        print("执行了Dog的init函数 初始化对象")


d = Dog("旺财")

print(d)
print(d.name)
"""
__new__函数__init__对比
| 特性             | __new__                          | __init__                        |
|-----------------|----------------------------------|-----------------------------|
| **方法类型**     | 静态方法(隐式,需手动声明 `cls`)     | 实例方法(自动传递 `self`)     |
| **执行顺序**     | 先执行(创建实例)                    | 后执行(初始化实例)           |
| **返回值**       | 必须返回实例对象                     | 无返回值                     |
| **主要用途**     | 控制对象创建逻辑                     | 初始化对象属性                |
| **参数结构**     | `cls, *args, **kwargs`            | `self, *args, **kwargs`     |
"""

 

posted @ 2025-04-12 01:10  郎小乐  阅读(7)  评论(0)    收藏  举报