Python从0到POC编写-魔法方法

news2024/9/9 1:32:38

name

__name__ 是系统定义的内部函数,

它的作用是识别模块。

通常我们看到这样一句话:

if __name__ == '__main__'

__name__ 的值有两种情况,那么挨个来说下。


如果模块是被直接执行的 ,那么 __name__ 的值 为 __main__

例如:


def test():
    print '__name__ = '__name__
if __name__ == '__main__':
    test()

定义一个 test() 函数,

那么这个函数是被执行的,

则 __name__ 就会变为 __main__

images


如果模块是被导入的,那么 __name__ 的值 为 模块的名字,

例如:


import sys
def test():
    print '__name__ = '__name__
if __name__ == '__main__':
    test()

使用 import函数 导入sys模块,

__name__ 的值 就是 sys


main

__main__ 是顶层代码执行的作用域的名称。

模块的 __name__ 在通过标准输入、脚本文件或是交互式命令读入的时候会等于 __main__ ,

模块可以通过检查自己的 __name__ 来得知是否运行在 main 作用域中。

__main__ 一般跟 __name__ 连用,不会单独使用。


init

__init__ 方法是一个特殊的方法(init是单词初始化initialization的省略形式),

它的作用是在使用类创建对象之后被执行,用于给新创建的对象初始化属性用。

举个粟子:


class test:
    def __init__(self, n, a):
        self.name = name    #  初始化属性
        self.age = age      #  初始化属性
        print("test")

self 表示对象本身,谁调用,就表示谁,

n 和 a 是自定义的变量名称,随便取啥都行。

这里 self.name = n 和 self.age = a 表示将外部传来的 n 和 a ,赋值给self对象的 name 和 age 属性。

举个粟子:


>>> man = test("小明",18)  #  实例化对象
>>> test  #  输出 test ,说明在创建类的实例的时候,__init__ 方法就立马被调用了。
>>> self.name
>>> '小明'
>>> self.age
>>> '18'

这里面,小明就是 n ,18 就是 a

在实例化对象的时候将他们分别赋值给 n 和 a


module

__module__ 表示当前操作的对象在那个模块

此方法也有两个不同的结果。


如果当前模块为被调用模块的时候 打印当前模块的名称

例如:


class Person(object):
    def __init__(self):
        self.name = '张三'
 
 
from test import Person   #  从另一个文件中导入类Person
 
obj = Person()
print(obj.__module__)    #  输出 test 即 输出模块

如果当前模块为顶层模块执行 则打印 __main__

例如:


def test():
    pass

print(test.__module__)   #  打印 __main__

str

如果要把一个类的实例变成 str ,就需要实现特殊方法 __str__

python在调用 print() 打印实例化对象时,

会调用 __str__() 方法 ,如果 __str__() 方法中有返回值,就会打印其返回值。

__str__ 方法 使用 return 作为返回值,而不是 print

例如:


class test:
    def __init__(self,name,age):
        self.name = name
        self.age = age 
    def __str__(self):
        return "我是 __str__ 方法"   #  实例化对象的时候有 return 会打印返回值
if __name__=="__main__":
    demo = test("张三",18)   #  实例化对象
    print(demo)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1667041.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

搭建 IIS + asp +access 网站

搭建 IIS asp access 网站 一、什么是 asp二、asp 的组成三、asp 说明四、什么是access五、搭建环境六、问题一七、问题二八、网站展示九、IIS 页面展示十、IIS 功能展示 欢迎关注公总号【云边小网安】 一、什么是 asp asp:即 Active Server Pages,是…

PullTube for Mac:视频下载,一键搞定

还在为找不到想看的视频而烦恼吗?PullTube for Mac,让您的视频下载之旅变得更加轻松!支持从多个主流视频网站下载视频,提供多种格式和质量选项,满足您的不同需求。简单易用的界面设计,让您轻松上手&#xf…

【北京迅为】《iTOP-3588从零搭建ubuntu环境手册》-第6章 安装Samba

RK3588是一款低功耗、高性能的处理器,适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用,RK3588支持8K视频编解码,内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

MongoDB安装及接入springboot

环境:windows、jdk8、springboot2 1.MongoDB概述 MongoDB是一个开源、高性能、无模式(模式自由)的文档(Bson)型数据库;其特点如下: 模式自由 ---- 不需要提前创建表 直接放数据就可以 支持高并…

TriCore:Interrupt

今天简单总结下 TriCore 的中断路由模块。 名词缩写 缩写全程说明IRInterrupt Router SRService Request 包括: 1. External Resource 2. Internal Resource 3.SW(Software) SPService Privoder 包括: 1. CPU 2. DMA SRNServic…

Unity2D 模拟手柄实现玩家移动

1,创建控制器UI 2,挂载脚本 3,脚本编写 基本要素 [Tooltip("玩家游戏体")]public Rigidbody2D player;[Tooltip("玩家速度")]public float speed 1f;[Tooltip("玩家动画")]public Animator animator;public …

本地运行.net项目

有时候需要我们自己做一个.net的课设项目,但是我们有了代码后却不知道怎么运行。我们0基础来学习一下如何运行一个.net项目 1.安装visual studio 2022 不用安装老版本,新版就可以。安装好了2022版本,这是一个支持web的IDE,我们可…

具有CMOS输出,高速响应特点的新型汽车级晶振SG2520CAA

爱普生推出的汽车级晶振SG2520CAA。SG2520CAA是一款CMOS输出的,具有高响应速度的2520封装汽车级晶振,具有低电流消耗,1.6 V至3.63 V的宽工作电压,以及-40C至85C的宽工作温度范围,此外还可提供高达125C的工作温度。符合…

vue3使用setup模式的store报错

** setup store模式 $reset方法报错 ** 顾名思义就是 使用store 使用的是setup 语法模式 不能执行$reset 方法 解决方式: // main.ts import { createPinia } from pinia const pinia createPinia() pinia.use(({ store }) > {const initialState JSON.pars…

算法学习系列(六十):区间DP

目录 引言区间合并模板一、石子合并二、环形石子合并三、能量项链 引言 关于这个区间 D P DP DP ,其实是有套路和模板的,题型的话也是变化不多,感觉就那几种,只不过有些题会用到高精度或者是要记录方案,所以整体来说…

SpringSecurity安全过滤器工作原理

前面通过三篇文章,从底层代码的角度分析了SpringSecurity的初始化过程。 接下来我们就要具体看一下,Spring Security的安全过滤器初始化、装配好之后,到底是怎么工作的。 还是按图索骥 下面我们简单从底层源码分析一下,请求是怎…

英语复习之英语形近词总结(四)

英语形近词总结复习第四部分: 单词 释义例句 genuine 英 /ˈdʒenjuɪn/ 美 /ˈdʒenjuɪn/ adj.真实的,真正的;诚恳的 1.Only genuine refugees can apply for asylum. 只有真正的难民才能申请政治避难。 《牛津词典》 2.This isnt a genui…

Java 区块链应用 | 割韭菜之假如K线涨跌可随意变动修改的实现

大家好,我是程序员大猩猩。 我一直在想,币圈这个行情时涨时跌,不断的割韭菜,不是由市场决定的!而是由交易所直接输入一个数值后点击确定按钮而变化的,那么是不是很恐怖的行为。 为了验证这么一个想法&…

十个最适合论文写作的GPTs及其应用

文章目录 一、GPTs让一切皆有可能二、最适合论文写作的GPTs及其应用1、[Paper Search Engine](https://chat.openai.com/g/g-9v5gHG9Bo)2、[Academic Paper Specialist(学术论文撰写专家)](https://chat.openai.com/g/g-jryw3pfsH)3、[Paper Connect 论文…

day10-Map集合

Map 1.Map 1.1 Map简介 1.为什么使用Map集合 购物车提供的四个商品和购买的数量在后台需要容器存储。 每个商品对象都一一对应一个购买数量。 把商品对象看成是Map集合的键,购买数量看成Map集合的值。 例如: {商品12 , 商品23 , 商品3 2 , 商品4…

msvcp140dll怎么修复,分享5种有效的解决方法

MSVCP140.dll文件丢失这一现象究竟是何缘由,又会引发哪些令人头疼的问题呢?在探索这个问题的答案之前,我们先来深入了解这个神秘的DLL文件。MSVCP140.dll是Microsoft Visual C Redistributable Package的一部分,它扮演着至关重要的…

梦幻西游全新变现,蓝海热门玩法,小白一部手机可操作,日入2000+

亲爱的朋友们,你们好!今天我要给大家分享一个热门、可行的网络赚钱项目——梦幻西游全新变现,蓝海热门玩法,小白一部手机可操作,日入2000。 这个项目不需要花冤枉钱,也是我自己实操过的,非常可…

ppt转pdf的java实现

一、实现方式 java采用jacob包的功能,把ppt演示文稿转换为pdf。 支持文件格式:pptx,ppt 二、事先准备 1、依赖于office,需安装office办公软件 2、需要下载一个jacob-1.20-x64.dll的文件,放到java的bin目录下。 文件可以网上搜…

day10-集合

day10 集合 1.集合概述 1.1为什么要用集合? 当我们在实现购物车功能时,可能需要随时添加新商品对象进来(个数不确定) ,也随时可能删除商品对象,这个时候之前学习的数组不满足我们的需求 1.2 什么是集合&…

职称论文的AIGC检测

和高校毕业论文一样,职称论文也是需要通过AIGC检测系统(www.checkaigc.com),并且也是有一定的要求的。AIGC检测是因为近年来越来越多人开始使用AI写作工具代写论文,为了防止论文中出现过高的AI论文生成内容&#xff0c…