首页 > 编程语言 >python魔术方法之__new__

python魔术方法之__new__

时间:2023-07-12 15:55:28浏览次数:47  
标签:__ python sex say print new def

一、基本用法

# 从一个类建立一个对象
# __new__ 从class建立一个object过程
# __init__ 有了object初始化过程
class Language:
    def __new__(cls, *args, **kwargs):
        print("__new__")
        return super().__new__(cls)

    def __init__(self):
        print("__init__")
        
language = Language()
-------------------------
__new__
__init__

二、类似负载分担的作用

可以在实例化时根据输入参数选择对应的类

class Sex:
    def __new__(cls, *args, **kwargs):
        if kwargs.get('sex') == 'man':
            return Man()
        elif kwargs.get('sex') == 'woman':
            return Woman()
        else:
            return super(Sex, cls).__new__(cls)

    def say(self):
        print("我看你不是人!")

class Man:
    def say(self):
        print("this is a man")
class Woman:
    def say(self):
        print("this is a woman")

sex = Sex(sex="man")
sex.say()
sex = Sex(sex="woman")
sex.say()
sex = Sex(sex="waixingren")
sex.say()

---------------------------
this is a man
this is a woman
我看你不是人!

标签:__,python,sex,say,print,new,def
From: https://www.cnblogs.com/twitedfate/p/17547707.html

相关文章

  • 修改表结构及表的约束的添加和删除
    修改表结构增加新列,语法如下,注意通过新增新列可以对新列的名称数据类型缺省值约束指定,增加的新列总是位于最后,假如新列定义了默认值,则新列所有行自动填充默认值,对于所有数据的表,新增加的新列的值为null,所有有数据的表,新增新列不能指定为notnull约束条件altertable表名add......
  • 智慧电力运维物联网平台
    我们构建软硬件结合的生态系统,打造电力设备物联平台,实现软件、硬件、平台、云数据一体化。在硬件领域通过自主研发推出了一系列电力领域的硬件设备,包括:智能电力测控终端、智能电力采集终端等产品。在软件领域,我们搭建电力设备物联平台。传统电力行业设备接入我们的电力设备物联......
  • VBA常用的文本函数 instr、mid
    InStr函数DimSearchString,SearchChar,MyPosSearchString="XXpXXpXXPXXP"'Stringtosearchin.SearchChar="P"'Searchfor"P".'Atextualcomparisonstartingatposition4.Returns6.MyPos=Inst......
  • 如何解决使用 router.push 跳转路由第二次之后页面就不会刷新了
    router.push({name:"monitor",query:{deviceid:"1676156672197922816",//设备IDisOpen:"true",//是否跳转事件date:newDate().getTime()//解决第二次使用push跳转路由页面不刷新}})在传递参数的时候加上 date:......
  • Objective C无法访问Swift结构体struct
    letParseApplicationId="xxx"letParseClientKey="xxx"letAppGreenColor=UIColor(red:0.2,green:0.7,blue:0.3alpha:1.0)@objcclassConstant:NSObject{privateinit(){}classfuncparseApplicationId()->String......
  • 【Python】对密码文本进行加密, 并判断 hashlib
    importhashlibdefencrypt_password(password,salt):#创建一个sha256的哈希对象sha256_hash=hashlib.sha256()#将盐值和密码组合起来并进行哈希hashed_password=salt.encode('utf-8')+password.encode('utf-8')sha256_hash.update(hashed_......
  • 安装zabbix 5.0
    5.0版本对基础环境的要求有大的变化,最大的就是对php版本的要求,最低要求7.2.0版本,对php扩展组件版本也有要求,详见官网文档https://www.zabbix.com/documentation/current/manual/installation/requirements关闭防火墙sed-i's/SELINUX=enforcing/SELINUX=disabled\'/etc......
  • [AHOI2014/JSOI2014] 骑士游戏
    [AHOI2014/JSOI2014]骑士游戏观察性质:对于一类怪兽,要么全部使用普通攻击,要么全部使用魔法攻击。若对怪兽\(i\)满足\(s_i>k_i\),则必使用魔法攻击。若按照怪兽的生成关系连有向边建图,则一个环内\(k\)值最小的怪兽必使用魔法攻击。注意到,如果我们已经确定了完全消灭一......
  • PyQt,PySide2中嵌入Matplotlib图像
    PyQt,PySide2中嵌入Matplotlib图像方式1使用QtDesigner新建一个MainWindow,在此之上创建一个VerticalLayout。importsysimportnumpyasnpfromPySide2.QtUiToolsimportQUiLoaderfromPySide2.QtWidgetsimportQApplicationimportmatplotlibmatplotlib.use("Qt5......
  • 华普智通HP-VSSP-1380 多功能型可变限速标志
    一种多功能可变限速标志,全点阵交通诱导信息屏,同时可兼顾交通管理信息发布和限速信息发布的功能。定制化一体服务公司介绍公司简介华普智通科技有限公司是一家专注于智能交通产品研发的企业,尤其专注于道路交通安全产品的方案研发。赋能智慧安全路网 ,共筑智能交通平台是我......