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