自定义内置方法来定制类的功能

1、__str__方法在对象被打印时,自动触发,应该在该方法内采集与对象self有关的信息,然后拼成字符串返回
class People:
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def __str__(self):
        print(‘======>‘)
        return ‘<name:%s age:%s>‘ %(self.name,self.age)
obj=People(‘egon‘,18)
obj1=People(‘alex‘,18)
print(obj)  # obj.__str__() #  <name:egon age:18>
print(obj.__str__()) # <name:egon age:18>
# print(obj.act())  # <name:egon age:18>  __str__ 改成act也可以,比较麻烦,不能直接打印对象就触发
print(obj1)  # obj1.__str__()  # <name:alex age:18>

d = {‘x‘: 1}  # d=dict({‘x‘:1})
print(d)  # dict 里有个__str__方法

2. __del__析构方法

__del__会在对象被删除之前自动触发

class People:
    def __init__(self,name,age):
        self.name=name
        self.age=age
        self.f=open(‘a.txt‘,‘rt‘,encoding=‘utf-8‘)

    def __del__(self):
        # print(‘run=-====>‘)
        # 做回收系统资源相关的事情
        self.f.close()

obj=People(‘egon‘,18)
print(‘主‘)

  

 
 

原文地址:https://www.cnblogs.com/Roc-Atlantis/p/9247202.html

时间: 2024-10-28 22:48:24

自定义内置方法来定制类的功能的相关文章

反射、自定义内置方法来定制类的功能、元类

一.反射 1. 定义:通过字符串来操作类或者对象属性 2. 方法:hasattr.getattr.setattr.delattr 3. 使用方法: 1 class People: 2 def __init__(self,name): 3 self.name=name 4 def put(self): 5 print('%s is putting'%self.name) 6 def get(self): 7 print('%s get sth'%self.name) 8 def run(self)

python基础27——反射&amp;内置方法

反射 什么是反射? 指的是在程序运行过程中可以"动态(不见棺材不掉泪)"获取对象的信息 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省) 什么是反射机制? 反射机制指的是在程序的运行状态中 对于任意一个类,都可以知道这个类的所有属性和方法 对于任意一个对象,都能够调用他的任意方法和属性 这种动态获取程序信息以及动态调用对象的功能称为反射机制 如何实现反射? class People: def __init__(self,

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__方法可

Python的内置方法和类的继承举例

1.类的内置方法 Python内部类:所谓内部类,就是在类的内部定义的类,主要目的是为了更好的抽象现实世界.例子:汽车是一个类,汽车的底盘轮胎也可以抽象为类,将其定义到汽车内中,而形成内部类,更好的描述汽车类,因为底盘轮胎是汽车的一部分.内部类实例化方法: 方法1:直接使用外部类调用内部类方法2:先对外部类进行实例化,然后再实例化内部类out_name = outclass_name()in_name = out_name.inclass_name()in_name.method() #!/us

29 内置方法 eval | exec 元类 单例

eval与exec内置方法 将字符串作为执行目标,得到响应结果 eval常用作类型转换:该函数执行完有返回值 exec拥有执行更复杂的字符串:可以形成名称空间 eval内置函数的使用场景:   1.执行字符串会得到相应的执行结果   2.一般用于类型转化,得到dict.list.tuple等 dic_str = "{'a': 1, 'b': 2, 'c': 3}" print(eval(dic_str)) list_str = "[1, 2, 3, 4, 5]" p

面向对象:类的内置方法

__str__和__repr__:实例化一个对象,该对象的返回值是一个指向这个类的内存地址 class A: pass a = A() print(a) #打印: <__main__.A object at 0x000001FA526DA108> 自定义__str__和__repr__方法: class Func: pass def __str__(self): return '我是自定义的str' def __repr__(self): return '我是自定义的repr' a = Fun

python-面向对象类的内置方法

内置方法 __init__(self [, ...]) init对象实例化时被调用,该方法不能有返回值 __new__(cls [, ...]) 对象实例化时第一个被调用的方法 默认里面的参数,会原封不动的传给init方法 返回一个对象obj,通常返回class类对象,也可以返回其他类对象 # 当继承一个不可变类型时,又需要的时候使用 # 需求:输入字符串,输出的是大写的字符串 class CapStr(str): def __new__(cls,string): string = string

python 类中内置方法的重写

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

[python] 类常用的内置方法

内置方法 说明 __init__(self,...) 初始化对象,在创建新对象时调用 __del__(self) 释放对象,在对象被删除之前调用 __new__(cls,*args,**kwd) 实例的生成操作 __str__(self) 在使用print语句时被调用 __getitem__(self,key) 获取序列的索引key对应的值,等价于seq[key] __len__(self) 在调用内联函数len()时被调用 __cmp__(stc,dst) 比较两个对象src和dst __ge