400-650-7353

精品课程

您所在的位置:首页 > IT干货资料 > python > 【Python基础知识】Python类的魔法方法和静态方法

【Python基础知识】Python类的魔法方法和静态方法

  • 发布: 优就业it培训
  • 来源:优就业
  • 2021-06-18 18:17:07
  • 阅读()
  • 分享
  • 手机端入口

1、类中的魔法方法

魔法方法是类或实例在特殊情况下自动执行的方法。魔法方法除了前文已经介绍过的__init__()构造方法外,还有__str__()打印方法和__del__()析构方法。

(1)__str__()打印方法

__str__()打印方法是打印描述实例信息的魔法方法,能够打印指定的信息,并自动执行。其语法格式如下:

class 类名(object):

def __str__(self):

方法体

下面是一个使用__str__()打印方法的示例:

  1. >>> class Car(object): 
  2. ...     def __init__(self, brand, color): 
  3. ...         self.brand = brand 
  4. ...         self.color = color 
  5. ...         self.max_speed = 240 
  6. ...     def __str__(self): 
  7. ...         return '品牌是{},颜色是{},最大时速是{}。'.format(self.brand, self.color, self.max_speed) 
  8. ... 
  9. >>> falali = Car('法拉利''白色'
  10. >>> print(falali) 
  11. 品牌是法拉利,颜色是白色,最大时速是240。 

上述程序中,Car类的__init__()构造方法接收小汽车的品牌和颜色参数赋值给实例属性,并且初始化一个最高时速实例属性;__str__()打印方法的功能是一个格式化字符串,描述了小汽车的属性。使用Car类创建实例falali,并传入两个参数,使用print()函数打印实例,此时自动调用了Car类中的__str__()打印方法,打印字符串。

(2)__del__()析构方法

__del__()析构方法是在删除实例时自动运行的魔法方法。其语法格式如下:

class 类名(object):

def __del__(self):

方法体

下面是一个使用__del__()析构方法的示例:

  1. >>> class Car(object): 
  2. ...     def __init__(self, brand, color): 
  3. ...         self.brand = brand 
  4. ...         self.color = color 
  5. ...         self.max_speed = 240 
  6. ...     def __del__(self): 
  7. ...         print('{}要报废了,要去车管所注销了'.format(self.brand)) 
  8. ... 
  9. >>> falali = Car('法拉利''白色'
  10. >>> print(id(falali)) 
  11. 43663600 
  12. >>> del falali 
  13. 法拉利要报废了,要去车管所注销了 
  14. >>> print(id(falali)) 
  15. Traceback (most recent call last): 
  16.   File "", line 1in  
  17. NameError: name 'falali' is not defined 

上述程序中,Car类中定义了一个析构方法,其功能是打印一个格式化字符串。当使用Car类创建实例falali后,调用id()方法获取falali实例的地址并打印;使用del falali删除falali实例,此时自动调用了Car类中的__del__()析构方法,打印字符串;再次调用id()方法获取falali实例的地址,Python解释器提示出错了,falali名称没有被定义,这是因为falali实例已经被删除了。

2、类中的静态方法

静态方法是类中不对当前属性和方法进行操作的方法。静态方法的特点如下:

①静态方法无隐含参数。

②无法通过self或cls调用属性。

③使用@staticmethod装饰。

静态方法的语法格式如下:

@staticmethod

def 方法名(参数):

方法体

调用静态方法有两种方式,一种是采用“类名.方法名(参数)”的形式;另一种是先实例化,再采用“实例名.方法名(参数)”的形式:

  1. >>> class Test(): 
  2. ...     @staticmethod 
  3. ...     def info(): 
  4. ...         print('成功进入静态方法'
  5. ... 
  6. >>> Test.info()   # 第一种调用方式 
  7. 成功进入静态方法 
  8. >>> s = Test() 
  9. >>> s.info()   # 第二种调用方式 
  10. 成功进入静态方法 

下面比较一下静态方法与类方法的相同点和不同点。

静态方法与类方法的相同点如下:

①都可以在类内调用。

②都可以通过实例调用。

静态方法与类方法的不同点如下:

①静态方法没有默认参数,类方法第一个默认参数为cls。

②静态方法内不能调用类属性或实例属性,类方法内只能调用类属性和类方法。

学习疑问申请解答
您的姓名
您的电话
意向课程
 

中公优就业

IT小助手

扫描上方二维码添加好友,请备注:599,享学习福利。

>>本文地址:
注:本站稿件未经许可不得转载,转载请保留出处及源文件地址。

推荐阅读

优就业:ujiuye

关注中公优就业官方微信

  • 关注微信回复关键词“大礼包”,享学习福利
QQ交流群
在线疑问解答
(加群备注“网站”)
IT培训交流群 加入群聊 +
软件测试 加入群聊 +
全链路UI/UE设计 加入群聊 +
Python+人工智能 加入群聊 +
互联网营销 加入群聊 +
Java开发 加入群聊 +
PHP开发 加入群聊 +
VR/AR游戏开发 加入群聊 +
大前端 加入群聊 +
大数据 加入群聊 +
Linux云计算 加入群聊 +
优就业官方微信
扫码回复关键词“大礼包”
享学习福利

测一测
你适合学哪门IT技术?

1 您的年龄

2 您的学历

3 您更想做哪个方向的工作?

获取测试结果
 
课程资料、活动优惠 领取通道