zoukankan      html  css  js  c++  java
  • __new__构造方法

    """
    对象的创建过程:new创建 返回
    模拟实例对象的创建过程.
    
    为啥是静态方法?
    
    先有new后来init.因为init是需要实例对象来调用的,需要一个实例对象和self形参.所以需要new首先来创建一个实例对象.
    
    """
    
    
    class Dog:
        pass
    
    
    dog1 = Dog()
    
    """
    类名()内部隐藏了两个魔法方法的自动调用
    
    1.__new__:创建并返回一个新的实例对象.魔法方法,自动调用,自动传参(Python解释器自己会)
    2.__init__:初始化操作,定义属性,先new后init,new后才会有实例对象,init需要使用实例对象(self形参位置需要传递一个实参过来)
    """
    
    
    # print(dog1)
    
    
    def dog_instance():
        """模拟实例对象创建过程"""
    
        # 1.调用new方法 创建 返回
        # Dog.__new__()
        instance = object.__new__(Dog)
        # new(cls)cls:形参,new方法调用的时候需要一个实参.虽然new是一个静态方法,不会自动传参和自动调用.但是Python解释器调用这个方法的时候在内部帮我们传递了实参给形参cls.(谁调用,谁传递参数.)
        # print(instance)
        # 2.初始化,定义属性
        instance.__init__()
        # 3.把实例对象返回
        return instance
    
    
    # Dog_instance()  # <__main__.Dog object at 0x000001879F5AB710>
    
    dog2 = dog_instance()
    print(dog2)  # <__main__.Dog object at 0x000001FF98428710>
  • 相关阅读:
    九度oj 题目1208:10进制 VS 2进制
    九度oj 题目1209:最小邮票数
    九度oj 题目1207:质因数的个数
    九度oj 题目1030:毕业bg
    九度oj 题目1014:排名
    九度oj 题目1048:判断三角形类型
    九度oj 题目1335:闯迷宫
    [Luogu] Tree
    点分治 算法学习 && [Poj] 1741
    [Luogu] 排序机械臂
  • 原文地址:https://www.cnblogs.com/huaibin/p/12097410.html
Copyright © 2011-2022 走看看