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

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是将该模块完全载入。第二种写法则只载入模块中的一个对象,这个对象可能是一个类,或者函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值