python 类的常见的特殊成员

# 类的特殊成员
class gg:
    ‘‘‘
    这里都是特殊类成员方法,在触发后这些方法都根据这些方法自动传递的参数就行代码的编写
    ‘‘‘
    #print(gg.__doc__)  # 查看类的描述信息
    def __init__(self,name):  #初始化对象  #类名() 创建对象的时候自动创建
        self.name = name
        self.data = {‘key‘:‘cisco‘}#定义一个类中的字典

    def __call__(self, *args, **kwargs):  #触发执行,使用  对象() 就会自动执行该方法的内容
        print(‘call 触发后执行这里的代码‘)

    def __getitem__(self, item):# 使用对象[‘key‘] 后自动调用, 会将‘key‘ 的值传到item
        print(‘随你喜欢,你可以对传递过来的值任意蹂躏‘)
        return self.data[item]

    def __setitem__(self, key, value): #对象[‘key‘] = ‘value‘  后会自动调用,像字典一样传值到对应的参数中
        print(key,value ,‘进行自由的代码操作的,拿到这两个值之后可以随便操作‘)
        self.data[key] = value

    def __delitem__(self, key):# 像字典一样,使用del 对象[‘key‘]  会自动执行
        print(‘我是%s,如果喜欢可以按照字典的方式对类的key进行删除如下:‘%key)
        del self.data[key]

    def __enter__(self): #使用with 对象 + as b 的时候 自动调用
        print(‘进来了,自动执行后的随意代码区,可以随便编写‘)

    def __exit__(self, exc_type, exc_val, exc_tb):#使用with 对象 + as b 的时候 自动调用
        print(‘出去了,自动执行后的随意代码区,可以随便编写‘)

    def __add__(self, other):  # 两个对象相加的的时候进行调用
        print(‘自动执行后的随意代码区,可以随便编写‘)

    def __str__(self): #在对应对象的时候调用并返回相应的return后面的 内容 通过打印调用 也可以使用str(对象)
        print(‘自动执行后的随意代码区,可以随便编写‘)
        return ‘打印对象的时候就将这里的内容进行返回‘

    def __repr__(self): #转化为解析器读取的形式, 调用时repr(对象)
        pass

    def __hash__(self):#设置本对象的hash 的功能,如果直接在对象的后面添加__hash__ = None 的话,该对象不能被进行哈希
        return ‘可以给自己定义的对象设置可以hash的功能‘

    def __new__(cls, *args, **kwargs):#构造方法__new__ 开辟内存,触发 __init__创建实例
        return object.__new__(cls)

    def __cmp__(self,x): #对象比较  调用方法  cmp(对象,x)
        pass

    def __del__(self): #析构方法:当对象在内存中被释放时,自动触发执行  del  对象
        pass

a = gg(‘panzhenwei‘) #  触发__new__ __init__
print(gg.__module__) # 查看当前操作的模块是哪个
print(gg.__class__)  #查看当前操作的类是哪个
print(gg.__dict__)  # 查看类或对象的成员,类只是打印类的成员不打印对象的成员
print(a.__dict__) #  查看类或对象的成员,对象只对应对象的成员,不打印类的成员
print(a ) #触发__str__
a()  # 触发__call__

a[‘name‘] = ‘cisco‘# 触发__setitem__
a[‘name‘]           # 触发__getitem__
del a[‘name‘]    #  触发__delitem

with a as f:  # 自动触发__enter__ 和__exit__
    print(‘打印这里的时候已经触发了__enter__‘)
print(‘代码执行到这里,说明已经退出了上面的句柄,已经触发完__exit__‘)

# 来自菜鸟编程的示例
class Vector:
    def __init__(self, a, b):
        self.a = a
        self.b = b

    def __str__(self):
        return ‘Vector (%d, %d)‘ % (self.a, self.b)

    def __add__(self, other):
        return Vector(self.a + other.a, self.b + other.b)

v1 = Vector(2, 10)# 触发__new__ __init__
v2 = Vector(5, -2)# 触发__new__ __init__
print(v1 + v2) # 触发__add__, 触发__new__ __init__   触发__str__

#结果 Vector(7,8)  #这个是字符串

原文地址:https://www.cnblogs.com/vivi0403/p/9931991.html

时间: 2024-11-12 04:09:06

python 类的常见的特殊成员的相关文章

Python类的成员

Python类的成员 一.细分类的组成成员 类大致分为两大部分: 静态属性 动态方法 class A: # 静态属性部分 name = "dogfa" age = 18 # 动态方法部分 def __init__(self, name, age): self.name = name self.age = age 每个区域详细划分又可以分为: class A: name = "dogfa" # 静态属性 __age = 18 # 私有静态属性 def __init__

第六章 Python类(面向对象编程)

什么是面向对象编程? 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构.Python就是这种编程语言. 面向对象程序设计中的概念主要包括:对象.类.继承.动态绑定.封装.多态性.消息传递.方法. 1)对象:类的实体,比如一个人. 2)类:一个共享相同结构和行为的对象的集合.通俗的讲就是分类,比如人是一类,动物是一类. 3)继承:类之间的关系,比如猫狗是一类,他们都有四条腿,狗继承了这个四条腿,拥有了这个属性. 4)动态绑定:在不

Python程序的常见错误(收集篇)

关于Python Python是一门解释性的,面向对象的,并具有动态语义的高级编程语言.它高级的内置数据结构,结合其动态类型和动态绑定的特性,使得它在快速应用程序开发(Rapid Application Development)中颇为受欢迎,同时Python还能作为脚本语言或者胶水语言讲现成的组件或者服务结合起来.Python支持模块(modules)和包(packages),所以也鼓励程序的模块化以及代码重用. 关于本文 Python简单.易学的语法可能会误导一些Python程序员(特别是那些

python 类和元类(metaclass)的理解和简单运用

(一) python中的类 首先这里讨论的python类,都基于继承于object的新式类进行讨论. 首先在python中,所有东西都是对象.这句话非常重要要理解元类我要重新来理解一下python中的类 class Trick(object): pass 当python在执行带class语句的时候,会初始化一个类对象放在内存里面.例如这里会初始化一个Trick对象 这个对象(类)自身拥有创建对象(通常我们说的实例,但是在python中还是对象)的能力. 为了方便后续理解,我们可以先尝试一下在新式

python—类对象和实例对象的区别

最近在对RF的通讯层的模块进行封装,需要将之前放在类似main里面的一个方法,如下所示:这段代码是开发提供,用于接口测试,模拟底层通讯,具体的通讯是在dll内,python这边只是做了个封装让RF进行调用.这段通讯层的代码实质上做了五件事: 第一:加载dll: 第二:初始化dll内的通讯参数: 第三:与服务器进行连接,创建session 第四:把数据senbuffer通过sessionManger发送给服务器 第五:取得的数据返回recibuffer def testlogin(ip,port,

python类:描述器Descriptors和元类MetaClasses

http://blog.csdn.net/pipisorry/article/details/50444769 描述器(Descriptors) 描述器决定了对象属性是如何被访问的.描述器的作用是定制当你想引用一个属性时所发生的操作. 构建描述器的方法是至少定义以下三个方法中的一个.需要注意,下文中的instance是包含被访问属性的对象实例,而owner则是被描述器修辞的类. __get__(self, instance, owner) – 这个方法是当属性被通过(value = obj.at

python类内init外声明的属性与init内声明的对象属性的访问和操作区别

python类内init外声明的属性与init内声明的对象属性的访问和操作区别(面试题) 1.在ipython中输入以下代码,其输出会是什么? In [1]: class ClassOut: ...: out_mem = 'out_mem' ...: print out_mem ...: def __init__(self): ...: inner_mem = 'inner_mem' ...: self.inner_mem = 'self.inner_mem' ...: self._inner_

python类的相关知识第二部分

类的继承.多态.封装 一.类的继承 1.应用场景: 类大部分功能相同,大类包含小类的情况 例如: 动物类 共性:都要吃喝拉撒.都有头有脚 特性: 猫类.走了很轻,叫声特别,喜欢白天睡觉 狗类.的叫声很大,晚上睡觉 2.继承顺序 在python2版本中多重继承有分两种继承循序 (1).一直往上找 .找到最高级的父类再重另外一个分支找,直到找到为止. (2).一直往上找,找到最高级父类的下一层后就不找了.从另外一个分支找,另外一个分支没找到最后才找最高级的父类. 再python3中只有第一种继承循序

Python发送邮件(常见四种邮件内容)

Python发送邮件(常见四种邮件内容) 转载 2017年03月03日 17:17:04 转自:http://lizhenliang.blog.51cto.com/7876557/1875330 在写脚本时,放到后台运行,想知道执行情况,会通过邮件.SMS(短信).飞信.微信等方式通知管理员,用的最多的是邮件.在linux下,Shell脚本发送邮件告警是件很简单的事,有现成的邮件服务软件或者调用运营商邮箱服务器. 对于Python来说,需要编写脚本调用邮件服务器来发送邮件,使用的协议是SMTP.