h3

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了,若不成立,那就报错  一般用在测试时

posted @ 2017-06-14 18:33  码上平天下  阅读(73)  评论(0)    收藏  举报