python面向对象代码示例

来源:互联网 发布:php页面跳转url不变 编辑:程序博客网 时间:2024/06/05 07:25
#!/usr/bin/env python# -*- coding: utf-8 -*-# a class definitionclass MyClass:    """一个简单的类定义 A Simple Example Class"""    i = 1234  #类的成员变量     def f(self):#类的成员函数        return "Hello World"        x = MyClass()print MyClass.__doc__print x.__doc__#显示定义一个类的初始化方法class Complex:    def __init__(self, realpart, imagpart):        self.r = realpart        self.i = imagpart        x = Complex(3.0, -4.5)print x.r, x.ix.counter = 2 #instance attributeprint x.counter # print Complex.counter将出错del x.counter#类的成员函数也可以在外部定义def f1(self, x, y):    return min(x, x+y)class C:    f = f1    def g(self):        return 'hello world'    h = g#这样C.f C.h C.g都是合法的函数对象#在类的函数定义中,可以使用self引用类的其他成员变量或函数对象class Bag:    def __init__(self):        self.data = []    def add(self, x):        self.data.append(x)    def addtwice(self, x):        self.add(x)        self.add(x)#继承与多重继承class BaseClassName:    pass  class DerivedClass(BaseClassName):    pass   class BaseClassName2:    pass  class DerivedClass2(BaseClassName, BaseClassName2):    pass  #实用方法isintance issubclassd = DerivedClass2()print isinstance(d, BaseClassName)print issubclass(DerivedClass2, BaseClassName2)#私有变量#在python中,没有真正意义上的私有概念,一般约定命名中以下划线开头的变量或函数为私有的。class Mapping:    def __init__(self, iterable):        self.items_list = []        self.__update(iterable)    def update(self, iterable):        for item in iterable:            self.items_list.append(item)    __update = update   # private copy of original update() methodclass MappingSubclass(Mapping):    def update(self, keys, values):        # provides new signature for update()        # but does not break __init__()        for item in zip(keys, values):            self.items_list.append(item)            #类似C中的结构体的使用class Employee:    passjohn = Employee() # Create an empty employee record# Fill the fields of the recordjohn.name = 'John Doe'john.dept = 'computer lab'john.salary = 1000#在python中,用户自定义的异常也被认为是类#有两种形式raise Class, instance 和 raise instanceclass B:    passclass C(B):    passclass D(C):    passfor c in [B, C, D]:    try:        raise c()    except D:        print "D"    except C:        print "C"    except B:        print "B"#迭代器的实现class Reverse:    """Iterator for looping over a sequence backwards."""    def __init__(self, data):        self.data = data        self.index = len(data)    def __iter__(self):        return self    def next(self):        if self.index == 0:            raise StopIteration        self.index = self.index - 1        return self.data[self.index]        rev = Reverse('spam')for char in rev:    print char#产生器def reverse(data):    for index in range(len(data)-1, -1, -1):        yield data[index]        for char in reverse('golf'):    print char