zoukankan      html  css  js  c++  java
  • 面向对象--特殊成员

    1.类的特殊成员之call

     1 class SpecialMembers:
     2     #类的构造方法
     3     def __init__(self):
     4         print("构造了一个方法")
     5     
     6     def __call__(self):
     7         print("构造了一个对象")
     8 
     9 #创建一个对象,并执行类的构造方法
    10 obj = SpecialMembers()
    11 #执行对象的构造方法
    12 obj()
    13 #先执行类的构造方法,然后再执行对象的构造方法
    14 SpecialMembers()()

    2.类的特殊成员之getitem,setitem,delitem

     1 class SpecialMembers:
     2     #当执行obj['value']的时候就会自动执行__getitem__方法,并且把对象括号内的值当做__getitem__的值
     3     def __getitem__(self,item):
     4         print(item)
     5     def __setitem__(self,key,value):
     6         print(key,value)
     7     def __delitem__(self,key):
     8         print(key)
     9 
    10 #创建一个对象
    11 obj = SpecialMembers()
    12 #自动执行__getitem__方法
    13 obj['value']
    14 #自动执行__setitem__方法
    15 obj['k1'] = 'values'
    16 #自动执行__delitem__方法
    17 del obj['key']

    3.类的特殊成员之dict

    获取类或对象中的所有成员

     1 class SpecialMembers:
     2     """
     3     类的注释
     4     """
     5     def __init__(self,name,age):
     6         self.name = 'abc'
     7         self.age = 18
     8 #获取类中的成员
     9 print(SpecialMembers.__dict__)
    10 #创建一个对象
    11 obj = SpecialMembers()
    12 #获取对象中的成员
    13 print(obj.__dict__)#以字典的形式输出

    4.类的特殊成员之iter

     1 class SpecialMembers:
     2     def __iter__(self):
     3         yield 1
     4         yield 2
     5         yield 3
     6 #创建一个对象
     7 obj = SpecialMembers()
     8 #如果执行for循环对象时,会自动执行对象的__iter__方法,此时的__iter__就是一个生成器
     9 for i in obj:
    10     print(i)

    5.类的特殊成员之add

     1 class SpecialMembers:
     2     def __init__(self,a1,a2):
     3         self.a1 = a1
     4         self.a2 = a2
     5     def __add__(self,other):
     6         return self.a1 + other.a2
     7 
     8 obj1 = SpecialMembers(1,2)
     9 obj2 = SpecialMembers(3,4)
    10 print(obj1 + obj2)#5

    6.真正的构造方法

     1 class Foo:
     2     def __init__(self,a1,a2):#初始化方法
     3         """
     4         为空对象进行数据初始化
     5         """
     6         self.a1 = a1
     7         self.s2 = a2
     8 
     9     def __new__(cls,*args,**kwargs):
    10         """
    11         创建一个空对象
    12         """
    13         return object.__new__(cls)#python内部创建一个当前类的对象
    14 
    15 obj = Foo(1,2)
    16 print(obj)
  • 相关阅读:
    【转】Redis和Memcache对比及选择
    Ubuntu下php环境的搭建
    【HTML和CSS】总结
    【python】 The different between ' %r ' and ' %s '
    Learn Python The Hard Way
    Vim 插件配置及快捷键
    sublime-text 插件配置
    mysql-5.7在CentOS-7下的rpm安装
    oracle pdb基本管理
    Oracle 12cR2 Installation On CentOS-7
  • 原文地址:https://www.cnblogs.com/s593941/p/9570717.html
Copyright © 2011-2022 走看看