首页 > 其他分享 >面向对象之魔法方法

面向对象之魔法方法

时间:2023-07-12 22:44:39浏览次数:48  
标签:__ name self 魔法 面向对象 init 方法 age

什么是魔法方法?

Python类中的魔法方法(Magic Methods)是特殊的方法,以双下划线(__)开头和结尾的方法。

这些方法在对象的创建、运算符重载、属性访问等方面提供了特定的行为。

都是内置方法,一般方法命名不建议使用这种格式即双下划线开头和结尾的方法

__init__(self, ...):构造函数,用于初始化对象

特点:

1. 创建对象时,自动调用即不需要程序员显示调用

2. __init__(self) 中的self参数,不需要开发者传递,python解释器会⾃动把当前的对象引 ⽤传递过去。

 

__str__(self): 返回对象的字符串表示形式,通过print()或str()调用

__del__方法: 对象删除时自动调用该方法

示例

 1 '''
 2 1. 什么是魔法方法?
 3     Python类中的魔法方法(Magic Methods)是特殊的方法,以双下划线(__)开头和结尾的方法。
 4     这些方法在对象的创建、运算符重载、属性访问等方面提供了特定的行为。
 5     都是内置方法,一般方法命名不建议使用这种格式即双下划线开头和结尾的方法
 6 2. 常见的魔法方法
 7 
 8 '''
 9 
10 '''
11 1. __init__(self, ...):构造函数,用于初始化对象,注意无参、带参数(含参数不同)的处理方法就是使用默认值
12 '''
13 
14 
15 #  无参数
16 class Person:
17     # 为了 person = Person() 和 person = Person('Allen', 30)同时出现,使用了默认值,没有像java一样的重载
18     def __init__(self, name=None, age=None):
19         self.name = name
20         self.age = age
21 
22     def __str__(self):
23         return f'name={self.name},age={self.age}'
24 
25     def __del__(self):
26         print(
27             f'{self}对象已经被删除,id={id(self)}')  # 其实回来了2个对象。name=None,age=None对象已经被删除,id=1914706281616   name=Allen,age=30对象已经被删除,id=1914706290192
28 
29 
30 # 无参数
31 person = Person()  # 执行此句,会自动调__init__方法
32 
33 # 带参数的__init__() __init__
34 person = Person('Allen', 30)
35 
36 '''
37 2. __str__(self): 返回对象的字符串表示形式,通过print()或str()调用。
38 '''
39 print(person)
40 
41 '''
42 3. __del__方法: 对象删除时自动调用该方法
43 '''
44 print(id(person))  # 1914706290192
45 del person

 

标签:__,name,self,魔法,面向对象,init,方法,age
From: https://www.cnblogs.com/allenxx/p/17549092.html

相关文章

  • Java关于方法的一些总结
    方法的一些总结1、方法的定义方法包含一个方法头和一个方法体。下面是一个方法的所有部分:修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。返回值类型:方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有......
  • 怎么看网站是否开启CDN加速?测试网站全国访问速度方法详解
    注意域名,动静分离的网站,只对静态文件的域名做了cdn怎么看网站有没开启CDN?要看一个网站是否开启CDN,方法很简单,只要在不同的地区ping网址就可以,比如在山东济南ping www.jb51.net 得到的IP地址是111.161.66.167,但在江苏地区ping www.jb51.net得到的IP确是61.147.92.111,像这样在不同......
  • 字符串转list以及list调remove方法报错
    Stringstr=scanner.nextLine();String[]arr=str.split("");List<String>list=newArrayList<>(Arrays.asList(arr));注意:使用Array.aslList时转出来的list是没有add和remove方法的,所以我们调用就会报错,把它放到newArrayList里面就能解决这个......
  • 检测数据类型的四种方法
    一、数据类型:1、基本数据类型:String、Number、Boolean、Null、Undefined、Symbol、BigInt2、引用数据类型:Object、Array、Function、Date、RegExp二、检测数据类型的四种方法1.typeof检测 特点:typeof只能检测基本数据类型(除了null),不能准确的检测引用数据类型。ob......
  • 面向对象基本概念
    什么是面向对象?一切皆对象,用面向对象的思想去编码,描述您的需求。 1.面向对象编程(Object-OrientedProgramming,简称OOP)是一种编程范式,它将数据和操作数据的方法封装在一个对象中。2.面向对象(Object-Oriented)是一种编程范式或方法论,它将数据和操作数据的方法封装在一个称为对......
  • 如何掌握JavaScript面向对象开发相关模式?
    本文学习目标:理解面向对象开发思想掌握JavaSciprt面向对象开发模式不管是JavaScript高级还是针对JavaScript语言本身的一个进阶学习,在开始之前我们先来对JavaScript相关知识点做一个回顾总结。一、JavaScript是什么1.1解析执行:轻量级解释型的语言特点:动态、头等函数(First-classFu......
  • 在 Windows 11 中,桌面上的右键菜单已经更新为全新设计。但如果你希望使用类似旧版本的
    在Windows11中,桌面上的右键菜单已经更新为全新设计。但如果你希望使用类似旧版本的右键菜单,可以尝试以下方法:使用注册表方法:按下Win+R组合键打开“运行”对话框,输入"regedit"并按Enter键打开注册表编辑器。在注册表编辑器中,导航到以下路径:HKEY_CURRENT_USER\Softwar......
  • 简单的排序方法汇总
    #include<stdio.h>//定义交换数值函数voidSwap(int*a,int*b);//定义输出数组函数voidPrint_arr(inta[],intsize);//简单插入排序voidFuns_Charu(inta[],intsize);//简单冒泡排序voidFuns_Maopao(inta[],intsize);//简单选择排序voidFuns_Xuanze(inta[],......
  • JMeter脚本报错:Cannot find engine named: 'javascript'的解决方法
    本文将介绍如何解决在JMeter版本5.4.1下执行脚本时出现的错误信息“javax.script.ScriptException:Cannotfindenginenamed:'javascript'”。通过将本地JDK版本从18.0.1.1更改为1.8.0_151来解决此问题。当使用JMeter进行脚本执行时,有时可能会遇到以下错误信息:javax.script......
  • Java字符串逆序的四种方法及比较
    Java中实现字符串逆序有以下几种常见的方法:方法一:使用StringBuffer或StringBuilder的reverse()方法。这是最简单和最直接的方法,只需要将String对象转换为StringBuffer或StringBuilder对象,然后调用它们的reverse()方法,就可以得到逆序的字符串。例如:publicclassStringReverse......