python中面向对象的类,方法,实例

来源:互联网 发布:java获取文件夹的路径 编辑:程序博客网 时间:2024/06/07 13:18

python中面向对象的类,方法,实例

编程入门学习中经常看到面向对象的类,方法,实例的概念。

类即种类,也就是事先定义的特征模版,用于创建一些具有相同特征的对象。

python中的类使用如下语句定义:

class Student(object):  pass

每个类都需要继承一个父类,如果没有父类需要继承默认object类。

实例

实例即通过类创建的具有某些属性的特定对象。

比如通过刚刚的Student类创造实例:

bob = Student()

可以自由地给实例添加属性:

bob.name = 'boby'

方法

刚刚给实例绑定属性也可以在类中完成。 类中定义的函数称为方法。

其中有一种特殊方法 __init__可以给类绑定默认必须属性。

class Student(object):  def __init__(self,name,score):    self.name = name    self.score = score

在使用该类定义实例时就必须传入这些参数:

bob = Student('boby',60)

注意到__init__方法第一个参数永远都是self,代表定义的实例本身。

除了特殊方法,类中也可以定义其他普通方法。如定义输出方法:

class Student(object):  def __init__(self,name,score):    self.name = name    self.score = score  def print_name_score(self):    print(self.name,self.score)

类中的方法第一个参数一定是self,并且调用时无需传入该参数。

此时定义一个实例则该实例拥有print_name_score的方法:

bob.print_name_score()

这样外部在使用实例的方法时不用考虑内部实现方式。这就是面向对象编程的一个特点:数据封装。

面向对象高级编程

__slot__

该特殊方法可限制实例可以添加的属性:

class Student(object):  __slot__ = ('name','age')bob = Student()

此时bob实例只可以添加name和age方法(属性)。

不过子类在继承父类后并不继承__slot__,如果子类中重新定义__slot__则子类继承父类__slot__及自身定义的__slot__

多重继承:

Python允许一个类继承多个父类:

class dog(animal,pet)

子类可以获得所有父类的方法。

__call__

如果想直接调用实例即可有返回而非调用实例的方法,则需定义一个特殊方法__call__

class Student(object):  def __init__(self,name):    self.name = name  def __call__(self):    print('My name is %s'%name)bob = Student('boby')bob()

类与模块

在导入模块时经常看到两种写法:
import module
from module import mo
其中第一种写法直接import module是将该模块完全载入。第二种写法则只载入模块中的一个对象,这个对象可能是一个类,或者函数。

0 0
原创粉丝点击