1,类中,自己访问自己的成员,除了类中的方法,例如 类.属性 ,方法的话使用实例化类后的对象访问
2,类的 普通字段,静态字段,普通方法,静态方法,类方法,普通特性
#-*- coding: utf-8 -*-#类的静态属性,方法,静态方法
classTest:#静态属性
country = '中国'
def __init__(self, name):
self.name=name#方法
deffunc1(self):print('方法')#静态方法,使用装饰器
@staticmethoddeffunc2():print('静态方法')#类方法
@classmethoddeffunc3(cls):print('类方法')#将方法伪造成字段, 用来获取end值
@propertydefend1(self):
temp= 'your name %s'%self.namereturntemp#用来设置end值
@end1.setterdefend1(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 -*-#面向对象成员修饰符
classTest:
os= 'haha'
#字段前加两个下划线表示为私有属性,在类中可以访问
__os = 'wowo'
def __init__(self):pass
deffunc1(self):print(self.__os)#私有的方法
def __func2(self):print('__func2')deffunc3(self):
self.__func2()#私有的静态方法
@staticmethoddef __func4():print('__func4')deffunc5(self):
Test.__func4()
obj=Test()print(obj.os)
obj.func1()
obj.func3()
obj.func5()
4,如果非要在外部访问类中的私有属性可以使用 对象._类__私有属性 不建议使用
5,对象直接加括号,执行类中的call方法
#-*- coding: utf-8 -*-#类中的call方法
classTest:def __init__(self):print('init')def __call__(self, *args, **kwargs):print('call')return 1obj=Test()
obj()#执行__call__
Test()() #执行__call__
r =Test()()print(r)
6,对象使用中括号调用类中不存在的属性时,会自动执行 __getitem__ 方法
7,对象使用中括号给类中不存在的属性赋值时,会自动执行__setitem__方法
8,对象使用中括号删除类中不存在的属性时,会自动执行__delitem__方法
classTest1: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__方法
classTest3:def __iter__(self):yield 1
yield 2
yield 3obj3=Test3()for item inobj3:print(item) #1,2,3
11,错误异常,捕获异常 try except Exception as e
#-*- coding: utf-8 -*-#错误异常
try:print(a)exceptException as e:print('您的错误:',e)
12,异常的完整结构
'''异常的完整结构
try:
pass
except Exception as e:
pass
else:
pass
finally:
pass'''
13,使用raise主动触发异常
try:print('123')raise Exception('出错le')exceptException as e:print(e)
14,断言 assert 如果条件成立那么就ok了,若不成立,那就报错 一般用在测试时