python中类的一些方法分析,python方法分析
python中类的一些方法分析,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程序设计的学习有一定的借鉴价值。
Python编程中类的概念可以比作是某种类型集合的描述,如“人类”可以被看作一个类,然后用人类这个类定义出每个具体的人——你、我、他等作为其对象。类还拥有属性和功能,属性即类本身的一些特性,如人类有名字、身高和体重等属性,而具体值则会根据每个人的不同;功能则是类所能实现的行为,如人类拥有吃饭、走路和睡觉等功能
类定义一般为:
class 类名[(父类名)]:[成员函数及成员变量],
类名为这个类的名称,而父类名为可选,但定义父类名后,子类则拥有父类的相应属性和方法。在用类定义成对象时,会先调用__init__构造函数,以初始化对象的各属性,类的各属性(成员变量)均可以在构造函数中定义,定义时只要加上对象指针就好。而在对象销毁时,则会调用__del__析构函数,定义类的成员函数时,必须默认一个变量(类似于C++中的this指针)代表类定义的对象本身,这个变量的名称可自行定义,一般使用self变量表示
基类和父类也是差不多的意思。
超类的叫法跟super关键词有关,其实就是如果当前类中不存在的方法或者变量,回按照继承链一直往上回溯,直到object类。
实例化就是从类创建对象。
__init__方法在类的一个对象被建立时,马上运行。这个方法可以用来对你的对象做一些你希望的 初始化 。注意,这个名称的开始和结尾都是双下划线。使用__init__方法例11.3 使用__init__方法#!/usr/bin/python
# Filename: class_init.py
class Person:
def __init__(self, name):
self.name = name
def sayHi(self):
print 'Hello, my name is', self.name
p = Person('Swaroop')
p.sayHi()
# This short example can also be written as Person('Swaroop').sayHi()(源文件:code/class_init.py)输出$ python class_init.py
Hello, my name is Swaroop它如何工作这里,我们把__init__方法定义为取一个参数name(以及普通的参数self)。在这个__init__里,我们只是创建一个新的域,也称为name。注意它们是两个不同的变量,尽管它们有相同的名字。点号使我们能够区分它们。最重要的是,我们没有专门调用__init__方法,只是在创建一个类的新实例的时候,把参数包括在圆括号内跟在类名后面,从而传递给__init__方法。这是这种方法的重要之处。现在,我们能够在我们的方法中使用self.name域。这在sayHi方法中得到了验证。给C++/Java/C#程序员的注释
__init__方法类似于C++、C#和Java中的 constructor 。
__del__
类似于析构函数
#!/usr/local/bin/python
class Study:
def __init__(self,name=None):
self.name = name
def __del__(self):
print "Iamaway,baby!"
def say(self):
print self.name
study = Study("zhuzhengjun")
study.say()
相关内容
- python使用marshal模块序列化实例,pythonmarshal
- python使用cPickle模块序列化实例,pythoncpickle
- python实现在pickling的时候压缩的方法,pythonpickling
- 跟老齐学Python之dict()的操作方法,齐学python
- 跟老齐学Python之有点简约的元组,齐学python
- 跟老齐学Python之数据类型总结,齐学python数据类型
- Python greenlet实现原理和使用示例,pythongreenlet
- 跟老齐学Python之深入变量和引用对象,齐学python
- 跟老齐学Python之赋值,简单也不简单,齐学python赋值
- Python的高级Git库 Gittle,pythongitgittle
评论关闭