php程序员学习python3学习第十八天
1,类中,自己访问自己的成员,除了类中的方法,例如 类.属性 ,方法的话使用实例化类后的对象访问
2,类的 普通字段,静态字段,普通方法,静态方法,类方法,普通特性
# -*- coding: utf-8 -*- #类的静态属性,方法,静态方法 class Test: #静态属性 country = '中国' def __init__(self, name): self.name = name #方法 def func1(self): print('方法') #静态方法,使用装饰器 @staticmethod def func2(): print('静态方法') #类方法 @classmethod def func3(cls): print('类方法') #将方法伪造成字段, 用来获取end值 @property def end1(self): temp = 'your name %s'%self.name return temp #用来设置end值 @end1.setter def end1(self,value): # pass self.name = value #访问类中的静态属性 直接使用类来进行访问 print(Test.country) #访问类中的方法,先实例化 obj = Test('rrr') obj.func1() #访问类方法 Test.func3() #访问伪造字段的方法 print(obj.end1) obj.end1 = 'rcl' print(obj.end1)
3,面向对象成员修饰符
# -*- conding: utf-8 -*- #面向对象成员修饰符 class Test: os = 'haha' # 字段前加两个下划线表示为私有属性,在类中可以访问 __os = 'wowo' def __init__(self): pass def func1(self): print(self.__os) #私有的方法 def __func2(self): print('__func2') def func3(self): self.__func2() #私有的静态方法 @staticmethod def __func4(): print('__func4') def func5(self): Test.__func4() obj = Test() print(obj.os) obj.func1() obj.func3() obj.func5()
4,如果非要在外部访问类中的私有属性可以使用 对象._类__私有属性 不建议使用
5,对象直接加括号,执行类中的call方法
# -*- coding: utf-8 -*- # 类中的call方法 class Test: def __init__(self): print('init') def __call__(self, *args, **kwargs): print('call') return 1 obj = Test() obj() #执行__call__ Test()() #执行__call__ r = Test()() print(r)
6,对象使用中括号调用类中不存在的属性时,会自动执行 __getitem__ 方法
7,对象使用中括号给类中不存在的属性赋值时,会自动执行__setitem__方法
8,对象使用中括号删除类中不存在的属性时,会自动执行__delitem__方法
class Test1: def __getitem__(self, item): print(item) def __setitem__(self, key, value): print(key, value) def __delitem__(self, key): print(key) obj1 = Test1() obj1['sss'] obj1['xxx'] = 'aaaa' del obj1['aaa']
9,类的特殊成员 __dict__ 获取对象中存在什么
10,对象呗迭代,则是在自动迭代其中的__iter__方法
class Test3: def __iter__(self): yield 1 yield 2 yield 3 obj3 = Test3() for item in obj3: print(item) #1,2,3
11,错误异常,捕获异常 try except Exception as e
# -*- coding: utf-8 -*- #错误异常 try: print(a) except Exception as e: print('您的错误:',e)
12,异常的完整结构
''' 异常的完整结构 try: pass except Exception as e: pass else: pass finally: pass '''
13,使用raise主动触发异常
try: print('123') raise Exception('出错le') except Exception as e: print(e)
14,断言 assert 如果条件成立那么就ok了,若不成立,那就报错 一般用在测试时
-------------------------立码平天下------------------------------

浙公网安备 33010602011771号