类的一些内置方法

一、__slots__

用来取代 __dict__  优势是省内存

附加功能是只能创建slots 定义好的key

注意:不要乱用,用了就没有__dic__方法了

class Foo:
    __slots__ = [‘name‘,‘age‘] #这里可以是列表或者单个字符串,定义key值

f1 = Foo()
print(f1.__slots__)
f1.name = ‘jinling‘  #只能给前面定义好的key设置值
print(f1.name)
f1.age = 18     #只能给前面定义好的key设置值
print(f1.age)

 

二、__doc__

查看类文档,该属性无法继承

class Foo:
    ‘我喜欢一个女孩‘
    pass
class Bar(Foo):
    pass
print(Foo.__doc__)
print(Foo.__dict__)
print(Bar.__dict__)

  

三、__module__  : 查看当前操作的对象在哪个模块

__class__ :查看当前操作的对象的类是什么

#syudy1

class Foo:
    print(‘她还没回我的消息‘)

#lala

from syudy1 import Foo
f1 = Foo()
print(f1.__module__)
print(f1.__class__)

四、__del__ 析构方法

当对象在内存中被释放时,自动触发执行,由python解释器自动去完成,平时不用管

class Foo:

    def __del__(self):
        print("执行我啦")

f1 = Foo()
del f1
print("----------------->")

  

class Foo:

    def __del__(self):
        print("执行我啦")

f1 = Foo()
# del f1
print("----------------->")

  

上面两个程序对比一下,为什么下面这个没有执行删除操作也触发释放内存了呢?

因为呢,在整个程序运行结束的时候,也会自动释放上面类占用的内存,所以就触发啦  

五、__call__

对象后面加括号,触发执行

class Foo:
    def __call__(self, *args, **kwargs):
        print(‘我执行啦‘)

f1 = Foo()
f1() #执行Foo下的__call__
Foo() #执行的是Foo所属类下的__call__

  

原文地址:https://www.cnblogs.com/dabai123/p/11627784.html

时间: 2024-10-13 13:59:12

类的一些内置方法的相关文章

[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

python 获取类中除内置方法外的所有方法名

#!/usr/bin/env python# !-*- coding:utf-8 -*- class Menu: def __init__(self): pass def updateProject(self): pass def restartProject(self): pass def restartTomcat(self): pass def stopTomcat(self): pass def startTomcat(self): pass def methods(self): ret

python 类中内置方法的重写

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

09-06 反射、内置方法

一 反射 在Python中,反射指的是通过字符串来操作对象的属性,涉及到四个内置函数的使用(Python中一切皆对象,类和对象都可以用下述四个方法) class Teacher: def __init__(self,full_name): self.full_name =full_name t=Teacher('Egon Lin') # hasattr(object,'name') hasattr(t,'full_name') # 按字符串'full_name'判断有无属性t.full_name

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__(

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

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

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

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

一.反射 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)

几个类的内置方法

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