Python进阶-----通过类的内置方法__format__自定制格式化字符串

__format__方法可以自定格式化字符串,不定义的话会执行默认格式
format(obj) 等同于--> obj.__format__

format_dic = {
    ‘y-m-d‘:‘{obj.year}-{obj.mon}-{obj.day}‘,
    ‘d/m/y‘:‘{obj.day}/{obj.mon}/{obj.year}‘
}
class Date:
    def __init__(self,year,mon,day):
        self.year = year
        self.mon = mon
        self.day = day
    def __format__(self, format_spec):   #自定制格式化
        if not format_spec or format_spec not in format_dic:  #用于判断用于是否输入格式信息或者输入的不在格式信息字典内
            format_spec = ‘y-m-d‘                             #制定默认格式
        fm = format_dic[format_spec]                          #通过格式字典取到对应的值
        return fm.format(obj = self)                      #‘{obj.year}-{obj.mon}-{obj.day}‘.format(obj) obj应是实例化对象

d = Date(2018,10,14)
x = format(d,‘y-m-d‘)
print(x)        #2018-10-14

原文地址:https://www.cnblogs.com/Meanwey/p/9788853.html

时间: 2025-01-07 16:57:41

Python进阶-----通过类的内置方法__format__自定制格式化字符串的相关文章

Python进阶-----通过类的内置方法__str__和__repr__自定制输出(打印)对象时的字符串信息

__str__方法其实是在print()对象时调用,所以可以自己定义str字符串显示信息,在该方法return一个字符串,如果不是字符串则报错print(obj) 等同于-->str(obj) 等同于-->obj.__str__ #未自定__str__信息 class Foo: def __init__(self,name,age): self.name = name self.age = age f = Foo('Menawey',24) print(f) #<__main__.Foo

Python进阶之浅谈内置方法

目录 有序or无序和可变or不可变 数字类型内置方法 整形 浮点型 字符串类型内置方法 有序or无序和可变or不可变 有序:有索引 无序:无索引 可变:变量值变,id不变 不可变:变量值变,id也变 数字类型内置方法 整形 1.作用 描述年龄,id,身高 2.定义方式 x=10 x=int('10') 3.内置方法 没有内置方法,只有算术运算和比较运算 4.存在一个值还是多个值 一个值 5.有序or无序 整形没有这一说法 6.可变or不可变 整形是不可变的 浮点型 1.作用 描述薪资等 2.定义

类的属性、类的方法、类的内置方法

类的属性 变量在类中称为类的属性,函数在类中称为类的方法,类的属性分为以下几种: (1) 公有属性:在类中和类外都能调用的属性,定义的时候与变量的定义一致,如 color = 'yellow'(2) 私有属性:不能在类外及被类以外的函数调用,定义的时候以双下划线开头,如__color = 'yellow' (3) 内置属性: 由系统在定义类的时候默认添加的,定义的时候以前后双下划线构成,如 dict #!/usr/bin/env python class People(object): colo

几个类的内置方法

# 类的内置方法 # 双下方法 # __str__ # 当类中定义了__str__方法后,print(这个类对象时),会调用__str__. 或者格式化%s输出对象时,都会触发__str__ # __repr__ # 当类中定义了__repr__方法后,print(repr(a)),就会调用a对象中的__repr__()方法.格式化输出用%r时同样会调用__repr__ # 同样对象中如果没有定义__repr__方法,那么就会调用父类中的__repr__ # __repr__是__str__的备

类的内置方法(魔法方法)

''' 类的内置方法(魔方方法): 凡是在类内部定义的,__开头__结尾的方法,都是类的内置方法,也称为魔法方法 类的内置方法,会在某种条件满足下自动触发. __new__:在__init__触发前,自动触发.调用该类时,内部会通过__new__来产生一个新的对象. __init_:在调用类时自动触发.通过__new__产生的对象自动调用__init__. ''' class Demo(object): def __new__(cls, *args, **kwargs): print('from

Python之基本数据类型及内置方法

Python之基本数据类型及内置方法 数字类型 整型 1.作用 年龄/id 2.定义方式 x = 10 3.使用方法 + - * / % // ** < <= > >= == != 4.有序or无序 有索引的就有序,无索引的就无序 压根就没有有序无序一说 5. 可变or不可变 值变id不变叫可变,值不变id变叫不可变 整型不可变 x = 10 print(id(x)) x += 1 print(id(x)) 浮点型 1.作用 薪资 2.定义方式 x = 10.1 3.使用方法 +

python 类中内置方法的重写

为达成目的,经常会在类中将一些内置方法进行重写,最常见的例如__setattr__,下面就通过内置属性,来查看重写会带来什么变化 先定义一个测试用的类,代码如下 class base: def __init__(self): pass inspect.getmembers(base): # 查看内置属性 打印结果如下 ('__class__', <class 'type'>) ('__delattr__', <slot wrapper '__delattr__' of 'object'

Python之面向对象:类的内置方法

1.def __add__(self,other): c1+c2 两个实例的加法操作就是执行__add__()方法 2.__str__(self): print一个实例的时候,执行的是__str__()这个内置方法 eg: class Vector(object): def __init__(self,a,b): self.a = a self.b = b def __str__(self): return 'Vector(%d,%d)'%(self.a,self.b) def __add__(

Python类的内置方法

目录 1.new.init 2.str.repr 3.call 4.del 5.iter.next 6.getitem.setitem.delitem 7.getattr.setattr.delattr 8.getatrribute 9.enter.exit 10.get.set.delete.描述符(研究中,待补充) **(为了方便和美观,省略了各内置方法前后的__双下划线)** 1.new.init __new__方法是真正的类构造方法,用于产生实例化对象(空属性).重写__new__方法可