极客饕餮 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: 结果: 4 4 woof! 使用Dog.bark()会报错. 类属性由类的所有实例共享. 尝试访问未定义的实例的属性会导致AttributeError.这也适用于你调用未定义的方法. 二 继承继承提供了一种在类之间共享功能的方法. 要从另一个类继承一个类.要将超类(父类)放在类名后面的括号中. 例如: 结果: brown woof! 从另一个类继承的类称为子类 被继承的被称为超类 如果一个类继承了另一个具有相同属性或方法的类,它们的属性和方法将覆盖它们. 结果: 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方法 每天坚持进步一点点. |
|