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

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.mfbz.cn/a/620802.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GBPC2510-ASEMI工业电源专用GBPC2510

编辑:ll GBPC2510-ASEMI工业电源专用GBPC2510 型号:GBPC2510 品牌:ASEMI 封装:GBPC-4 最大重复峰值反向电压:1000V 最大正向平均整流电流(Vdss):25A 功率(Pd):中小功率 芯片个数&#x…

汇聚荣科技:拼多多开店时后期押金可以退吗?

在电商领域,拼多多以其独特的团购模式迅速崛起,吸引了众多商家入驻。对于这些商家而言,了解平台的各项费用政策尤为重要,其中押金的退还问题是大家关注的焦点之一。那么,拼多多开店时后期押金可以退吗?答案是肯定的。…

要不还是别搞Google Play了

​好消息:误导性条款合规了 坏消息: 应用被暂停了,太难玩了 5.13日收到邮件,被告知应用因为应用内体验问题被暂停上架了 邮件大意是由于违反执行流程政策(Violation of Enforcement Process policy)。 这个政策主要是讲Google Play会对账户/…

简述RocketMQ系统架构及其相关概念

一、概述 RocketMQ是一款高性能、高吞吐量的分布式消息队列系统,它采用了分布式架构,支持多生产者和消费者并发读写,具有高可用性、高吞吐量、低延迟等特点。本文将对RocketMQ的系统架构进行详细解析。 二、架构设计 RocketMQ采用了分布式架…

深度学习知识点全面总结

ChatGPT 深度学习是一种使用神经网络来模拟人脑处理数据和创建模式的机器学习方法。下面是深度学习的一些主要知识点的总结: 1. 神经网络基础: - 神经元:基本的计算单元,模拟人脑神经元。 - 激活函数:用于增加神…

通过任意文件读取获取weblogic账号密码

对于weblogic获取到账号密码的前提是有任意文件读取存在,当任意文件读取存在时是可以读取配置文件来对账号密码进行解密。weblogic密码使用AES(老版本3DES)加密,对称加密可解密,只需要找到用户的密文与加密时的密钥即可…

Docker基础学习

目录 初始docker 安装docker docker架构 配置docker镜像加速器 docker进程相关命令 docker镜像相关命令 docker容器相关命令 docker容器的数据卷 初始docker 我们写代码会接触好几个环境,如开发环境、测试环境、生产环境。代码从开发环境打包到测试环境&am…

中医揿针的注意事项

点击文末领取揿针的视频教程跟直播讲解 关于揿针的注意事项,我们可以从以下几个方面进行探讨: 01操作前准备 1. 确保针具的清洁和无菌状态,以避免感染。 2. 了解患者的身体状况,如是否有特殊疾病或过敏史,以便选择…

如何使用Shortemall自动扫描URL短链接中的隐藏内容

关于Shortemall Shortemall是一款针对URL地址安全与Web内容安全的强大工具,该工具基于纯Python开发,专为Web安全方向设计,可以帮助广大研究人员以自动化的形式扫描URL短链接中的隐藏内容。 Shortemall的全名为ShortEm All,该工具…

前端框架 Vue 主要用来做什么的?

Vue.js 是一个流行的前端框架,主要用于构建交互式的用户界面。它的设计目标是通过简单的 API 提供高效的数据驱动视图层。Vue 具有响应式数据绑定和组件化的特性,使得开发者可以轻松地构建复杂的单页面应用 (SPA) 和动态网页。 1. 数据驱动视图 Vue 的…

百亿补贴为什么用 H5?H5 未来会如何发展?

百亿补贴为什么用 H5?H5 未来会如何发展? 本人有一些分析预测。当然,这些分析预测只是个人观点,如果你有不同的意见,欢迎在评论区讨论交流。 百亿补贴为什么用 H5 我们先看两张图,在 Android 手机开发者…

Spring简介IOCDI

文章目录 Spring简介Spring课程介绍为什么要学学什么怎么学 初识SpringSpring家族Spring发展史 Spring体系结构Spring核心概念目前代码存在的问题核心概念 IOC和DI入门案例IOC入门案例入门案例分析实现步骤实现代码 DI入门案例DI入门案例分析实现步骤实现代码图解演示 Bean的基…

美业收银系统源码-App/iPad/PC管理系统常见问题讲解(1)

博弈美业管理系统源码 连锁多门店美业收银系统源码 多门店管理 / 会员管理 / 预约管理 / 排班管理 / 商品管理 / 促销活动 PC管理后台、手机APP、iPad APP、微信小程序 1、平板iPad的评论内容,是从哪里评论的呢? 顾客在接受服务后,可以到…

这些小众软件让你秒变职场高手

工作繁忙,效率不高?别急,今天就要给你种草几款超实用的小众工作软件,让你的办公桌面焕然一新,效率翻倍!👀 1️⃣《亿可达》 🖥️ 它是一款自动化工具,相当于国内版免费…

Pytorch如何计算网络参数

方法一. 利用pytorch自身 PyTorch是一个流行的深度学习框架,它允许研究人员和开发者快速构建和训练神经网络。计算一个PyTorch网络的参数量通常涉及两个步骤:确定网络中每个层的参数数量,并将它们加起来得到总数。 以下是在PyTorch中计算网…

Secnet-智能路由系统 actpt_5g.data 信息泄露漏洞复现

0x01 产品简介 Secnet安网智能AC管理系统是广州安网通信技术有限公司(简称“安网通信”)的无线AP管理系统。 0x02 漏洞概述 Secnet-智能路由系统 actpt_5g.data 接口存在信息泄露漏洞,未经身份验证的远程攻击者可以利用此漏洞获取系统账户…

免费吃外卖美团饿了么霸王餐cps返利h5公众号小程序开源版开发

免费吃外卖美团饿了么霸王餐cps返利h5公众号小程序开源版开发 外卖点餐高额返现、无需招商、无需垫资均、佣金35%~61%、私域运营持续稳定。 价格实惠低成本创业、配置简单最快10分钟上线、个体企业都可创建、H5小程序公众号、 2024新风向高佣才是硬道理。 01业务简介 业务模…

【一触即发】快来围观C3安全大会酷炫九宫格!

C3安全大会2024 2024年5月18日 南京扬子江国际会议中心 C3安全大会2024 即将揭幕! 图解C3 | 九宫格 数智变革,“AI”正以其颠覆性力量,重塑我们对未来的定义。亚信安全邀您共襄盛举,见证这场于5月18日盛大开幕的C3安全大会2024…

精酿之魂:精酿啤酒的酿造工艺与技术

啤酒,作为世界上古老的酒精饮品,其酿造工艺与技术经历了数千年的发展和演变。而在这一过程中,精酿啤酒逐渐崭露头角,成为了啤酒界的璀璨明星。作为精酿啤酒的品牌,Fendi club啤酒凭借其与众不同的酿造工艺与技术&#…

C++下使用Matplotlib-cpp的一些配置

Aconda3安装使用 https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/下载 切换清华源 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ con…