魔术方法,在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. 使用OpenCV滑动条写成的简单调色器,实时输出RGB值

    好久没有写博客了,近期在看OpenCV.于是动手写了个简单的RGB调色器,在终端实时输出RGB的值.通过这个程序学习滑动条的使用.程序中主要用到cvCreateTrackbar ,其使用方法例如以下: ...

  2. Centos7安装Rancher

    docker pull rancher/server:v1.6.14 启动一个单实例的Rancher. docker run -d --restart=unless-stopped -p 8080:8 ...

  3. oc44--多对象内存管理

    // Room.h #import <Foundation/Foundation.h> @interface Room : NSObject @property int no;// 房间号 ...

  4. poj 3498 March of the Penguins(拆点+枚举汇点 最大流)

    March of the Penguins Time Limit: 8000MS   Memory Limit: 65536K Total Submissions: 4873   Accepted: ...

  5. RecastNavigation(3D场景建模、网格导航)

    一.RecastNavigation详解 RecastNavigation定义: RecastNavigation是一个导航寻路工具集,使用邻接的凸多边形集合描述一个3D场景,A*寻路算法使3D场景的 ...

  6. A - High School: Become Human

    Problem description Year 2118. Androids are in mass production for decades now, and they do all the ...

  7. C# Area 双重路由如何写

    在WebApi项目里面 一般除了接口, 还有管理端...一些乱七八糟的,你想展示的东西, 一种做法是分开写: 比如管理后台一个项目, 然后接口一个, 然后页面一个, 其实这样做也可以,但是这么做, 无 ...

  8. [转]Java web 开发 获取用户ip

    如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,那么真正的用户端的真实IP则是取X-Forwarded-For中第一个非unknown的有效IP字符串. pu ...

  9. ios 指纹识别解锁

    :添加LocalAuthentication.framework框架 :实现过程 #import "ViewController.h" #import <LocalAuthe ...

  10. MatLab之Simulink之simple model

    Use Simulink to model a system and then simulate the dynamic behavior of that system. 1 Open in Comm ...