python-多态、类属性、类方法、静态方法、异常

来源:互联网 发布:win10 linux安装教程 编辑:程序博客网 时间:2024/06/15 15:54

多态

#!/usr/bin/python#coding:utf-8class Animil(object):    def bark(self):        print "animal bark"class Dog(Animil):    def bark(self):        print "dog brak"class Horse(Animil):    def bark(self):        print "horse bark"dog = Dog()dog.bark()print "-----------------"def animalBar(temp):    temp.bark()animalBar(dog)

输出如下:

E:\python\python_jdk\python.exe E:/python/py_pro/safly/SaflyDemo.pydog brak-----------------dog brakProcess finished with exit code 0

类属性

#!/usr/bin/python#coding:utf-8class Animil(object):    address="河北"    bbbb = 0    def bark(self):        self.bbbb += 1animal = Animil()print "类对象、实例对象均可获取类变量"print animal.bbbbprint Animil.bbbbprint "-----赋值self.bbbb += 1(同名bbbb)------"animal.bark()print "------类对象使用类变量-------"print Animil.bbbbprint animal.bbbbAnimil.bbbb+=1print Animil.bbbbprint animal.bbbb###实例对象自己的bbbbprint "-------实例对象使用类变量"animal.bbbb += 1print Animil.bbbbprint animal.bbbbprint "---用字符串测试下----"print Animil.addressprint animal.addressanimal.address = "山东"print Animil.addressprint animal.addressAnimil.address = "海南"print Animil.addressprint animal.address

输出如下:

E:\python\python_jdk\python.exe E:/python/py_pro/safly/SaflyDemo.py类对象、实例对象均可获取类变量00-----赋值self.bbbb += 1(同名bbbb)------------类对象使用类变量-------0111-------实例对象使用类变量12---用字符串测试下----河北河北河北山东海南山东Process finished with exit code 0

类方法

#!/usr/bin/python#coding:utf-8class Animil(object):    address="河北"    @classmethod    def setAddress(cls):        cls.address = "山东"    def setAddress2(self):        self.address="哈哈"print "类对象可以直接调用类属性、类方法" \      "但是类对象不能调用实例方法、实例属性"print "实例对象可以调用实例属性、类属性,只能修改实例属性,不能直接修改类属性" \      "它还可以调用类方法、实例方法"animal = Animil()Animil.setAddress()print animal.addressprint Animil.addressanimal.setAddress()print animal.addressAnimil.address="海南"print Animil.addressprint animal.addressanimal.setAddress2()print animal.addressprint Animil.address

输出如下:

E:\python\python_jdk\python.exe E:/python/py_pro/safly/SaflyDemo.py类对象可以直接调用类属性、类方法但是类对象不能调用实例方法、实例属性实例对象可以调用实例属性、类属性,只能修改实例属性,不能直接修改类属性它还可以调用类方法、实例方法山东山东山东海南海南哈哈海南Process finished with exit code 0


静态方法

#!/usr/bin/python#coding:utf-8class Animil(object):    address="河北"    @classmethod    def setAddress(cls):        cls.address = "山东"    @staticmethod    def getAddress():        return Animil.addressprint Animil.addressanimal = Animil()print animal.addressanimal.setAddress()print "-------------"print Animil.addressprint animal.addressprint Animil.getAddress()print animal.getAddress()

输出如下:

E:\python\python_jdk\python.exe E:/python/py_pro/safly/Python_Demo.py河北河北-------------山东山东山东山东Process finished with exit code 0

异常

#!/usr/bin/python#coding:utf-8print "---------------异常except------------"try:    print numexcept NameError:    print '产生错误了;'print "---------------finally------------"try:    print numexcept NameError, errorMsg:    print '产生错误了;', errorMsgfinally:    print "finally"print "---------------捕获多个异常------------"try:    open('123.txt','r')    print numexcept (IOError,NameError), errorMsg:    #如果想通过一次except捕获到多个异常可以用一个元组的方式    # errorMsg里会保存捕获到的错误信息    print errorMsgprint "---------------异常else------------"num = 1try:    print numexcept NameError:    print '产生错误了;'else:    print "没有异常"

输出如下:

E:\python\python_jdk\python.exe E:/python/py_pro/safly/SaflyDemo.py---------------异常except------------产生错误了;---------------finally------------产生错误了; name 'num' is not definedfinally---------------捕获多个异常------------[Errno 2] No such file or directory: '123.txt'---------------异常else------------1没有异常Process finished with exit code 0
阅读全文
0 0