【Python】类中的特殊成员(Python成员函数)

网友投稿 285 2022-08-27


【Python】类中的特殊成员(Python成员函数)

"""class Foo(object): def __init__(self,a1,a2): self.a1 = a1 self.a2 = a2 def __call__(self, *args, **kwargs): print(11111,args,kwargs) return 123 def __getitem__(self, item): print(item) return 8 def __setitem__(self, key, value): print(key,value,111111111) def __delitem__(self, key): print(key) def __add__(self, other): return self.a1 + other.a2 def __enter__(self): print('1111') return 999 def __exit__(self, exc_type, exc_val, exc_tb): print('22222')"""# 1. 类名() 自动执行 __init__# obj = Foo(1,2)# 2. 对象() 自动执行 __call__# ret = obj(6,4,2,k1=456)# 3. 对象['xx'] 自动执行 __getitem__# ret = obj['yu']# print(ret)# 4. 对象['xx'] = 11 自动执行 __setitem__# obj['k1'] = 123# 5. del 对象[xx] 自动执行 __delitem__# del obj['uuu']# 6. 对象+对象 自动执行 __add__# obj1 = Foo(1,2)# obj2 = Foo(88,99)# ret = obj2 + obj1# print(ret)# 7. with 对象 自动执行 __enter__ / __exit__ # obj = Foo(1,2)# with obj as f: #先执行__enter__方法,再执行with里面代码代码的代码,再执行__exit__方法# print(f)# print('内部代码')# 8. 真正的构造方法# class Foo(object):# def __init__(self, a1, a2): # 初始化方法# """# 为空对象进行数据初始化# :param a1:# :param a2:# """# self.a1 = a1# self.a2 = a2## def __new__(cls, *args, **kwargs): # 构造方法# """# 创建一个空对象# :param args:# :param kwargs:# :return:# """# return object.__new__(cls) # Python内部创建一个当前类的对象(初创时内部是空的.).## obj1 = Foo(1,2)# print(obj1)## obj2 = Foo(11,12)# print(obj2)

# __str__ class Foo(object): def __init__(self): pass def func(self): pass def __str__(self): return "F1" obj = Foo() print(obj,type(obj)) #直接打印obj对象会调用__str__方法#__doc__ class Foo(object): """ asdfasdfasdfasdf """ def __init__(self): pass def func(self): pass def __str__(self): return "F1" obj = Foo() print(obj.__doc__) #打印出注释的内容 asdfasdfasdfasdf__dict__ class Foo(object): def __init__(self,name,age): self.name = name self.age = age def func(self): pass obj1 = Foo('刘博文',99) obj2 = Foo('史雷',89) #打印出对象封装的值 print(obj1.__dict__) # {'name': '刘博文', 'age': 99} print(obj2.__dict__) # {'name': '史雷', 'age': 89}__iter__ # l1是list类的一个对象,可迭代对象 l1 = [11,22,33,44] # l2是list类的一个对象,可迭代对象 l2 = [1,22,3,44] class Foo(object): def __init__(self,name,age): self.name = name self.age = age def func(self): pass def __iter__(self): # return iter([11,22,33,44,55,66]) yield 11 yield 22 yield 33 # obj1是Foo类的一个对象,可迭代对象 """ 如果想要把不可迭代对象 -> 可迭代对象 1. 在类中定义__iter__方法 2. iter内部返回一个迭代器(生成器也是一种特殊迭代器) """ obj1 = Foo('刘博文',99) for item in obj1: print(item)


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringBoot整合Activiti工作流框架的使用
下一篇:【Python】面向对象-反射(python中的面向对象)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~