python中类的一些方法分析

本文实例分析了python中类的一些方法,分享给大家供大家参考。具体分析如下:

先来看看下面这段代码:

class Super:
  def delegate(self):
    self.action() 

class Provider(Super):
  def action(self):
    print 'in Provider.action' 

x = Provider()
x.delegate()

本文实例运行环境为Python2.7.6

运行结果如下:

in Provider.action

在Super类中定义delegate()方法,delegate中调用self.action,在Provider子类中实现action方法。子类调用父类的delegate方法时,实际是调用自己的action方法。。

总之一句话:

这里子类实现了父类delegate中所期望的action方法

再来看看下面这段代码:

class Super:
  def delegate(self):
    self.action()
  def method(self):
    print 'super method' 

class Inherit(Super):
  pass 

class Replace(Super):
  def method(self):
    print "replace method" 

class Extended(Super):
  def method(self):
    print 'in extended class'
    Super.method(self)
    print 'out extended class' 

class Provider(Super):
  def action(self):
    print 'in Provider.action' 

x = Inherit()
x.method()
print '*'*50 

y = Replace()
y.method()
print '*'*50 

z = Extended()
z.method()
print '*'*50 

x = Provider()
x.delegate()

运行结果如下:

super method
**************************************************
replace method
**************************************************
in extended class
super method
out extended class
**************************************************
in Provider.action

分别继承父类的方法,替换父类的方法,扩展了父类的方法
Super类定义了delegate方法并期待子类实现action函数,Provider子类实现了action方法.

相信本文所述对大家Python程序设计的学习有一定的借鉴价值。

(0)

相关推荐

  • python 动态获取当前运行的类名和函数名的方法

    一.使用内置方法和修饰器方法获取类名.函数名 python中获取函数名的情况分为内部.外部,从外部的情况好获取,使用指向函数的对象,然后用__name__属性 复制代码 代码如下: def a():passa.__name__ 除此之外还可以: 复制代码 代码如下: getattr(a,'__name__') 尽管有些脱裤子放屁,总之,从外部获取的方法是非常灵活的. 有些同学需要从函数内部获取函数本身的名字,就需要用些技巧了.1.使用sys模块的方法: 复制代码 代码如下: def a():pr

  • Python读取环境变量的方法和自定义类分享

    使用os.environ来读取和修改环境变量: 复制代码 代码如下: import os print (os.environ["TEMP"]) mydir = "c:\\mydir" os.environ["MYDIR"] = mydir print (os.environ["MYDIR"]) pathV = os.environ["PATH"] print (pathV) os.environ["

  • python的类方法和静态方法

    本文实例讲述了python的类方法和静态方法.分享给大家供大家参考.具体分析如下: python没有和C++中static关键字,它的静态方法是怎样的呢?还有其它语言中少有的类方法又是神马? python中实现静态方法和类方法都是依赖于python的修饰器来实现的. 复制代码 代码如下: class MyClass:       def  method(self):            print("method")       @staticmethod     def  stat

  • python中实现定制类的特殊方法总结

    看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的. __slots__我们已经知道怎么用了,__len__()方法我们也知道是为了能让class作用于len()函数. 除此之外,Python的class中还有许多这样有特殊用途的函数,可以帮助我们定制类. __str__ 我们先定义一个Student类,打印一个实例: 复制代码 代码如下: >>> class Student(object): ...     def __init

  • Python实现子类调用父类的方法

    本文实例讲述了Python实现子类调用父类的方法.分享给大家供大家参考.具体实现方法如下: python和其他面向对象语言类似,每个类可以拥有一个或者多个父类,它们从父类那里继承了属性和方法.如果一个方法在子类的实例中被调用,或者一个属性在子类的实例中被访问,但是该方法或属性在子类中并不存在,那么就会自动的去其父类中进行查找. 继承父类后,就能调用父类方法和访问父类属性,而要完成整个集成过程,子类是需要调用的构造函数的. 子类不显式调用父类的构造方法,而父类构造函数初始化了一些属性,就会出现问题

  • python中的实例方法、静态方法、类方法、类变量和实例变量浅析

    注:使用的是Python2.7. 一.实例方法 实例方法就是类的实例能够使用的方法.如下: 复制代码 代码如下: class Foo:    def __init__(self, name):        self.name = name    def hi(self):        print self.name if __name__ == '__main__':    foo01 = Foo('letian')    foo01.hi()    print type(Foo)    p

  • python进程类subprocess的一些操作方法例子

    subprocess.Popen用来创建子进程. 1)Popen启动新的进程与父进程并行执行,默认父进程不等待新进程结束. 复制代码 代码如下: def TestPopen():   import subprocess   p=subprocess.Popen("dir",shell=True)   for i in range(250) :     print ("other things") 2)p.wait函数使得父进程等待新创建的进程运行结束,然后再继续父进

  • Python 检查数组元素是否存在类似PHP isset()方法

    PHP中有isset方法来检查数组元素是否存在,在Python中无对应函数. Python的编程理念是"包容错误"而不是"严格检查".举例如下: 复制代码 代码如下: Look before you leap (LBYL): if idx < len(array): array[idx] else: #handle this Easier to ask forgiveness than permission (EAFP): try: array[idx] ex

  • Python中模拟enum枚举类型的5种方法分享

    以下几种方法来模拟enum:(感觉方法一简单实用) 复制代码 代码如下: # way1 class Directions:     up = 0     down = 1     left = 2     right =3     print Directions.down # way2 dirUp, dirDown, dirLeft, dirRight = range(4) print dirDown # way3 import collections dircoll=collections.

  • Python类的专用方法实例分析

    本文实例讲述了Python类的专用方法.分享给大家供大家参考.具体分析如下: Python 类可以定义专用方法,专用方法是在特殊情况下或当使用特别语法时由 Python 替你调用的,而不是在代码中直接调用(象普通的方法那样). 1. __init__ 类似于构造函数 复制代码 代码如下: #!/usr/local/bin/python class Study:         def __init__(self,name=None):                 self.name = na

随机推荐