魔术方法,在python中,是通过触发的形式调用,之所以称为魔术方法,
是因为不需要特地的打印或调用它,在某些特定的时候,他会自己调用,所谓的特定的时候,
也是我们自己所输入的代码操作的,不是莫名其妙的触发调用 比如说定义一个矩形类,有长和宽两个实例属性,还有一个计算面积的方法,
实现类的实例可调用,调用打印边长;同时,直接打印类实例
时能够打印出来实例的面积 类的实例可调用,用到的是__call__方法,
  形如:类名(),就会直接打印所设计的代码内容 按照正常的面向对象的方法,如果定义了一个类,我们的实例化操作是:
  定义一个实参,去接受类名的实例化(a = LeiMing()),
  如果我们直接打印这个实参,将会返回这个类在内存中的地址信息 但是加上__str__魔术方法,直接打印实例,将会打印出__str__方法下的多输入的代码编译内容 如上所要求的题目,给出代码:
 class Area:
"""定义一个面积类"""
def __init__(self, long, wid):
"""初始化长和宽"""
self.long = long
self.wid = wid def area(self):
"""计算面积"""
mianji = int(self.long) * int(self.wid)
return '面积是:' + str(mianji) class Square(Area):
"""继承Area类,打印面积和打印边长"""
def __str__(self): # print(实例)
return self.area() def __call__(self, *args, **kwargs): # 实例调用
print('边长是:' + str(self.long)) square = Square(7,7) # 实例化
print(square) # 打印实例
square() # 调用实例

结果:
 
 

__call__ 和 __str__ 魔术方法的更多相关文章

  1. day19-Python运维开发基础(类的魔术方法)

    1. __new__魔术方法 # ### __new__ 魔术方法 ''' 触发时机:实例化类生成对象的时候触发(触发时机在__init__之前) 功能:控制对象的创建过程 参数:至少一个cls接受当 ...

  2. Learn day7 继承(单、多、菱形)\多态\魔术方法\装饰器\异常

    1.继承 1.1 单继承# ### 继承 """ (1) 单继承 (2) 多继承 至少2个类,子类和父类 一个类继承另外一个类,当前类是子类 (衍生类) 被继承的这个类是 ...

  3. Pthon魔术方法(Magic Methods)-可视化

    Pthon魔术方法(Magic Methods)-可视化 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.关于可视化的魔术方法简介 __str__: str()函数,format ...

  4. Python的程序结构[1] -> 方法/Method[4] -> 魔术方法 __call__ / __str__ / __repr__

    __call__ 方法 __call__ 是当对象被调用时会调用的方法,允许一个对象(类的实例等)像函数一样被调用,也可以传入参数. 1 class Foo(): 2 def __init__(sel ...

  5. python的__call__、__str__、__repr__、__init__、__class__、__name___、__all__、__doc__、__del__等魔术方法的作用

    python中,一切都是对象 在Python中,所有以“__”双下划线包起来的方法,都统称为“Magic Method”--魔术方法 1.__call__:作用是把类实例变成一个可调用对象 在Pyth ...

  6. 034.Python的__str__,__repr__,__bool__ ,__add__和__len__魔术方法

    Python的其他方法 1 __str__方法 触发时机: 使用print(对象)或者str(对象)的时候触发 功能: 查看对象信息 参数: 一个self接受当前对象 返回值: 必须返回字符串类型 基 ...

  7. Python 魔术方法指南

    入门 构造和初始化 构造定制类 用于比较的魔术方法 用于数值处理的魔术方法 表现你的类 控制属性访问 创建定制序列 反射 可以调用的对象 会话管理器 创建描述器对象 持久化对象 总结 附录 介绍 此教 ...

  8. [python]魔术方法

    一.初始化: 1.__new__方法,初始化过程中第一个用到的方法(用处不大). 2.之后,__init__方法,构造方法. 3.最后,在对象回收时,调用__del__方法.如果解释器退出时,对象还存 ...

  9. Python 面向对象(三) 魔术方法

    __getitem__ 在对实例或对象使用索引访问时调用,self[key]__dir__ 收集当前模块的信息,包括继承自其它基类(包括object类)的属性和方法 __new 定义如何创建实例__i ...

随机推荐

  1. git 的安装和使用

    安装Git 下载并安装 mysysgit 下载并安装 git windows版本号 配置Git 设置你的名字和邮箱 git config --global user.name "xxxx&q ...

  2. 《Pro Android Graphics》读书笔记之第二节

    Android Digital Video: Formats, Concepts and Optimization Android Digital Video Formats: MPEG4 H.264 ...

  3. oc32--构造方法1

    // // Person.h #import <Foundation/Foundation.h> @interface Person : NSObject @property int ag ...

  4. spring:按照Bean的名称自动装配User

    本实例将介绍如何按照Bean 的名称自动装配 User 对象! <bean> 元素的 autowire 属性负责自动装配 <bean> 标签,定义 JavaBean 的属性.这 ...

  5. 使用idea2.5建立maven项目

    使用idea的步骤: 1.建立一个新的maven项目 2.选中maven项目 3.点击next,输入groupID和artifactid 4.点击next  选择projectlocation 5.选 ...

  6. D - Replacement

    Problem description Little Petya very much likes arrays consisting of n integers, where each of them ...

  7. Dotnet Core2.1 使用CodeFirst

    一.添加Mysql引用 二.添加连接字符串 三.配置startup.cs 三.初始化数据库 Add-Migration init Update-Database 四.数据迁移 user实体添加了pas ...

  8. 利用POPAnimatableProperty属性来实现动画倒计时

    POPAnimatableProperty *prop = [POPAnimatableProperty propertyWithName:@"countdown" initial ...

  9. HTML学习笔记——DOCTYPE和DTD,标准模式和兼容模式

    主要涉及知识点: HTML与XHTML HTML与XHTML的区别 DOCTYPE与DTD的概念 DTD的分类以及DOCTYPE的声明方式 标准模式(Standard Mode)和兼容模式(Quirc ...

  10. 错误:android.view.InflateException: Binary XML file line #167: Binary XML file line #167: Error inflating class <unknown>

    1:错误日志 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.8.activity.RecordActiv ...