分享

python面向对象编程——类与继承 初认识

 静幻堂 2018-10-07
极客饕餮 2018-09-20 20:20:28

ラムジ - PLANET.mp3

04:08

来自极客饕餮

一 类

三种编程模式:

1.命令式(使用语句,循环和函数).

2.函数式(使用纯函数,高阶函数和递归recursion)

3.面向对象编程(oop)

对象时使用类来创建的,而这些类实际上是oop的模具.

类描述了对象是什么,但是和对象本身是分开的.换句话说,一个类可以被描述为一个对象的蓝图,描述或定义.

类使用关键字class和一个包含类方法的缩进块创建的.

下面是一个简单的类和它的对象的例子:

class Cat:

def __init__(self,color,legs):

self.color=color

self.legs=legs

felix=Cat("ginger",4)

rover=Cat("dog-colored",4)

stumpy=Cat("brown",3)

这段代码定义了一个名为Cat的类,它有两个属性:color和legs

然后这个类被用来创建这个类的3个独立的对象.

__init__方法是一个类中最重要的方法.它被称为类的构造函数.

所有的方法都必须以self作为自己的第一个参数,虽然它没有被明确地传递,但是python为自己添加了自变量

在调用方法时,不需要包含它.在一个方法定义中,self指的是调用该方法的实例.

注意:__init__是两个下划线,不是_init_

类的实例具有属性,这些属性是与它们相关联的数据片段

在这个例子中,Cat实例具有属性color和legs.这些可以通过在一个实例之后加一个点和属性名来访问.

在__init__方法中,可以使用self.attribute来设置实例属性的初始值.

class Cat:

def __init__(self,color,legs):

self.color=color

self.legs=legs

felix=Cat("ginger",4)

print(felix.color)

结果:

ginger

在上面的例子中,__init__方法接受两个参数并将它们分配给对象的属性.

类可以通过在类的主体内分配变量来创建类属性,也可以在类的主体内定义其他方法来为其添加功能.这些可以通过从类的实例或类本身来访问类属性.只能通过实例来访问自定义的方法.

例如:

class Dog:
legs=4
def __init__(self,name,color):
self.name=name
self.color=color
def bark(self):
print("woof!")
fido=Dog("Fido","brown")
print(fido.legs)
print(Dog.legs)
fido.bark()

结果:

4

4

woof!

使用Dog.bark()会报错.

类属性由类的所有实例共享.

尝试访问未定义的实例的属性会导致AttributeError.这也适用于你调用未定义的方法.

二 继承

继承提供了一种在类之间共享功能的方法.

要从另一个类继承一个类.要将超类(父类)放在类名后面的括号中.

例如:

python面向对象编程——类与继承 初认识

结果:

brown

woof!

从另一个类继承的类称为子类

被继承的被称为超类

如果一个类继承了另一个具有相同属性或方法的类,它们的属性和方法将覆盖它们.

python面向对象编程——类与继承 初认识

结果:

woof!

继承也可以是间接的.比如,一个类B继承类A,类C也可以继承类B.但是不允许A继承B(不允许循环继承)

super函数是一个与父类继承相关的函数,它可以用来在对象的超类中找到具有特定名称的方法.

例如:

class A:

def spam(self):

print(1)

class B(A):

def spam(self):

print(2)

super().spam()

B().spam()

结果:

2

1

super().spam()是调用超类的spam方法

每天坚持进步一点点.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多