博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面向对象--内置方法
阅读量:5126 次
发布时间:2019-06-13

本文共 2042 字,大约阅读时间需要 6 分钟。

__名字__
类中的特殊方法\内置方法      双下方法      魔术方法   magic_method  类中的每一个双下方法都有它自己的特殊意义
 
1.__call__ 相当于 对象()
class A:    def __call__(self, *args, **kwargs):        print('执行call方法了')a = A()a()  # 对象() == 相当于调用__call__方法A()()#相当于先实例化得到一个对象,再对对象(),==>和上面的结果一样,相当于调用__call__方法结果:执行call方法了执行call方法了
 
class A:    def __call__(self, *args, **kwargs):        print('执行call方法了')    def call(self):        print('执行call方法了')class B:    def __init__(self,cls):        print('在实例化A之前做一些事情')        self.a = cls()        self.a()        print('在实例化A之后做一些事情')B(A)在实例化A之前做一些事情执行call方法了在实例化A之后做一些事情

 

2.__len__  相当于len(obj)
内置函数和类的内置方法是有联系的
class mylist:    def __init__(self):        self.lst = [1,2,3,4,5,6]        self.name = 'alex'        self.age = 83    def __len__(self):        print('执行__len__了')        return len(self.__dict__)l = mylist()print(len(l))结果:3
 
class mylist:    def __init__(self):        self.lst = [1,2,3,4,5,6]        self.name = 'alex'        self.age = 83    def __len__(self):        print('执行__len__了')        return len(self.lst)l = mylist()print(len(l))结果:6
len(obj)相当于调用了这个obj的__len__方法  __len__方法return的值就是len函数的返回值  如果一个obj对象没有__len__方法,那么len函数会报错
3.__new__  特别重要   开辟内存空间的 类的构造方法
 单例类
class Single:    __ISINCTANCE = None    def __new__(cls, *args, **kwargs):        if not cls.__ISINCTANCE:            cls.__ISINCTANCE = object.__new__(cls)        return cls.__ISINCTANCE    def __init__(self,name,age):        self.name = name        self.age = ages1 = Single('aaaa',83)s2 = Single('bbbb',40)print(s1.name)print(s2.name)结果:bbbbbbbb
 

4.__str__  str(obj), '%s'  %  obj,  print(obj)

 

class Student:    def __str__(self):        return '%s %s %s'%(self.school,self.cls,self.name)    def __init__(self,name,stu_cls):        self.school = 'oldboy'        self.name = name        self.cls = stu_clsa = Student('asd','55')print(a)q = Student('qwe','66')print(q)print(str(a))   # 内置的数据类型,内置的类,相当于执行__str__print('学生1 : %s'%a)oldboy 55 asdoldboy 66 qweoldboy 55 asd学生1 : oldboy 55 asd

 

 

 

 
 
 

转载于:https://www.cnblogs.com/chenyibai/articles/9392953.html

你可能感兴趣的文章
Weka中数据挖掘与机器学习系列之基本概念(三)
查看>>
Win磁盘MBR转换为GUID
查看>>
大家在做.NET B/S项目的时候多用什么设技术啊?
查看>>
Java SE和Java EE应用的性能调优
查看>>
Android设计模式系列--原型模式
查看>>
免费的论文查重网站
查看>>
C语言程序第一次作业
查看>>
leetcode-Sort List
查看>>
中文词频统计
查看>>
了解node.js
查看>>
想做移动开发,先看看别人怎么做
查看>>
Eclipse相关集锦
查看>>
虚拟化架构中小型机构通用虚拟化架构
查看>>
继承条款effecitve c++ 条款41-45
查看>>
Java泛型的基本使用
查看>>
1076 Wifi密码 (15 分)
查看>>
noip模拟赛 党
查看>>
bzoj2038 [2009国家集训队]小Z的袜子(hose)
查看>>
Java反射机制及其Class类浅析
查看>>
Postman-----如何导入和导出
查看>>