首页 > 其他分享 >str和repr魔术方法

str和repr魔术方法

时间:2024-03-17 12:44:07浏览次数:23  
标签:__ res self repr 魔术 str print

Str魔术方法

# ### __str__ 魔术方法
'''
	触发时机: 使用print(对象)或者str(对象)的时候触发
	功能:     查看对象
	参数:     一个self接受当前对象
	返回值:   必须返回字符串类型
'''

class Cat():
	gift = "抓老鼠"
	def __init__(self,name):
		self.name = name
		
	def cat_gift(self):
		return "小猫叫{},小猫会{}".format(self.name,self.gift)
	
	def __str__(self):
		return self.cat_gift()	

	__repr__ = __str__  # 重写实现repr可以使用
	
tom = Cat("汤姆")
# 触发时机1 :  print(对象)
print(tom)
# 触发时机2 :  str(对象)
res = str(tom)
print(res)

res = repr(tom)
print(res , type(res))

repr魔术方法

'''
	触发时机: 使用repr(对象)的时候触发
	功能:     查看对象,与魔术方法__str__相似
	参数:     一个self接受当前对象
	返回值:   必须返回字符串类型
'''

"""
x = 10

	re = repr(x)
	print(re,type(re))  
	repr() return str  便于解释器就行分析 结果可以被eval执行
"""



class Mouse():
	gift = "偷油吃"
	def __init__(self,name):
		self.name = name
	
	def mouse_gift(self):
		return "老鼠叫{},老鼠会{}".format(self.name,self.gift)
	
	def __repr__(self):
		return self.mouse_gift()
	
	# 系统底层默认把__repr__方法赋值给__str__方法,所以通过print或者str强转可以触发;
	# __str__ = __repr__
	
jerry = Mouse("杰瑞")

# 触发时机1 :  print(对象)
print(jerry)
# 触发时机2 :  repr(对象)

res = repr(jerry)
print(res)

# 触发时机3 :  str(对象)
res = str(jerry)
print(res)


标签:__,res,self,repr,魔术,str,print
From: https://www.cnblogs.com/wbcde116/p/18078431

相关文章

  • Java 8中 lambda表达式、Stream API的常见用法
    1、取出集合中的某个字段://拿到车辆idsList<Long>carIds=parkCarInDbList.stream().map(ParkCar::getId).collect(Collectors.toList());2、集合直接进行遍历然后进行相关操作:List<Car>cars=carService.getListByCarId(carIds);cars.forEach(car->......
  • IMBALANCED TARGET DISTRIBUTIONS LEARING(目标类别不平衡学习)
    什么是目标类别不平衡?假设你训练集中数据的目标类别的分布较为均匀,那么这样的数据集所建立的分类模型,通常会有比较好的分类效能。假设你训练集中数据的目标类别的分布不均匀(存在MajorityClass和MinorityClass的时候),那么这样的数据集造成的问题是分类模型通常倾向将所有数据预......
  • UVA10829 L-Gap Substrings
    我永远喜欢数据结构。貌似是此题中第一个使用SA+分治+二维数点做法的题解?题目传送门给出字符串\(s\)和常数\(g\),求出有多少四元组\((l_1,r_1,l_2,r_2)\),满足\(s[l_1,r_1]=s[l_2,r_2]\)且\(r_1+g+1=l_2\)。\(T\)组数据,\(1\leT,g\le10\),\(|s|\le5\times10......
  • new魔术方法
    New''' 触发时机:实例化类生成对象的时候触发(触发时机在__init__之前) 功能:控制对象的创建过程 参数:至少一个cls接受当前的类,其他根据情况决定 返回值:通常返回对象或None'''基本使用classMyClass2(): a=100obj2=MyClass2()#print(obj2)classMyClass1():......
  • 插入数据库遇到中文无插入的问题 Error 1366 (HY000): Incorrect string value: ‘\x
    项目场景:beego登录注册过程中将信息写入到MYSQL数据库中问题描述字段写入过程中数据出现无法写入的情况,出现报错:Error1366(HY000):Incorrectstringvalue:‘\xE7\x94\xB7’forcolumn‘sex’atrow1原因分析:根据控制台收到的打印信息我发现数据正确从前......
  • IO流(主要是记住四大类InputStream,OutputStream、Reader和Writer,其他都是他们的子类)
    IO流1、文件(1)文件概念文件就是保存数据的地方。例如word文档,txt文件,execl文件等等。(2)文件流文件在程序中是以流的形式来操作的。流:数据在数据源(文件)和程序(内存)之间经历的路径输入流:数据从数据源(文件)到程序(内存)的路径输出流:数据从程序(内存)到数据源(文件)的路径2、常用......
  • 使用c++容器string相关完成
    //把邮箱地址字符串[email protected],取出其中用户名字符串打印stringgetUsername(string&s){   intpops=s.find('@');   stringusername=s.substr(0,pops);   returnusername;}//大小写转换 使用标准库提供俩函数,单个字符为操作对象stringstr=......
  • CF56D Changing a String 题解
    双倍经验:P2758。令\(dp_{i,j}\)表示\(s\)前\(i\)个字符要变成\(t\)前\(j\)个字符所需的最少移动次数。答案即为\(dp_{\lverts\rvert,\lvertt\rvert}\)。显然有初始状态\(dp_{i,0}=dp_{0,i}=i\)。因为我们只可能从添、删、替三种操作转移而来,于是有转移方程:......
  • C. Rudolf and the Ugly String
    题解遇到map时,sum++;遇到pie时,sum++。特殊情况遇到mapie时,sum--(因为map,pie分别加了一次,但是该子串只需要去掉p即可)code #include<bits/stdc++.h>usingnamespacestd;constintN=2e5+5;inta[N];intmain(){//freopen("input.txt","r",stdin);intt;ci......
  • Spring框架与其他框架(如Struts、Hibernate等)相比有何独特之处?Spring框架的主要优点有
    Spring框架与其他框架(如Struts、Hibernate等)相比有何独特之处?在Spring框架的面试中,可能会被问到的问题涵盖多个方面,包括但不限于以下几个方面:Spring框架的基本理解:请简述一下你对Spring框架的理解。Spring框架的主要优点有哪些?Spring框架与其他框架(如Struts、Hibernate......