Python 面向对象编程——类和实例

1        面向对象编程

面向对象编程:

面向对象编程——Object OrientedProgramming

OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。

面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。

面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。

所有的数据类型可以视为对象,当然也可自定义对象,自定义的对象数据类型就是面向对象中的类(class)的概念。

涉及到类,自然想到实例,类是数据类型的抽象,而实例是类的具体(个人理解)。

>>> std1 = { ‘name‘: ‘Michael‘,‘score‘: 98 }

>>> std2 = { ‘name‘: ‘Bob‘,‘score‘: 81 }

>>>

>>> def print_score(std):    --打印学生的姓名和成绩

...    print(‘%s: %s‘ % (std[‘name‘], std[‘score‘]))

...

>>> print_score(std1)

Michael: 98

>>> print_score(std2)

Bob: 81

根据面向对象的程序设计思想,这个student应该被视为对象,抽象成类;

>>> classStudent(object):    --定义类

...    def __init__(self, name, score):

...        self.name = name

...        self.score = score

...    def print_score(self):    --定义方法

...        print(‘%s: %s‘ % (self.name, self.score))

...

>>> bart = Student(‘Bart Simpson‘,59)

>>> lisa = Student(‘Lisa Simpson‘,87)

>>> bart.print_score()     --调用对象的方法,一个具体的对象——实例

Bart Simpson: 59

>>> lisa.print_score()

Lisa Simpson: 87

面向对象的设计思想是抽象出Class,根据Class创建Instance。

1.1   类和实例

1.1.1   类和实例

>>> class Student(object):   --class定义类的关键字,Student类名(大写开头),(object)表示从哪个类继承下来的

...    pass

...

>>> Student

<class ‘__main__.Student‘>

>>> bart = Student()    --根据类创建实例

>>> bart

<__main__.Student object at0x2b7d2fd759e8>

如果没有合适的继承类,就使用object类,这是所有类最终都会继承的类。

可以自由地给一个实例变量绑定属性,比如,给实例bart绑定一个name属性:

>>> bart.name = ‘Bart Simpson‘

>>> bart.name

‘Bart Simpson‘

由于类起到的是模板的作用,创建类时,可以把必须绑定的属性强制填写进去—通过init方法

>>> class Student(object):

...    def __init__(self, name,score):  --init方法,init的第一个参数永远是self

...        self.name = name

...        self.score = score

...

在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。

存在init方法,创建实例时,必须填入指定参数,但self不需要传入,Python自己填入。

>>> bart = Student(‘DAIDAI‘, 99)  --必须填入指定参数,强制性

>>> bart.name    --name,score成为对象的属性

‘DAIDAI‘

>>> bart.score

99

>>> bart.self   --不能这么指定self

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

AttributeError: ‘Student‘ object has noattribute ‘self‘

>>> bart.grade = ‘A‘   --新增属性grade

>>> bart.grade

‘A‘

类的方法和普通函数没有什么区别,所以,你仍然可以用默认参数、可变参数、关键字参数和命名关键字参数。

1.1.2   数据封装

>>> class Student(object):

...    def __init__(self, name, score):

...        self.name = name

...        self.score = score

...    def print_score(self):    -- print_score方法

...        print(‘%s: %s‘ % (self.name, self.score))

...    def get_grade(self):    --get_grade 方法

...        if self.score >= 90:

...             print(‘A‘)

...        elif self.score >= 70:

...             print(‘B‘)

...        else:

...             print(‘C‘)

...

定义方法,第一个参数是self,其他和函数一致。

>>> daidai = Student(‘DAIDAI‘, 99)

>>> daidai.print_score()    --实例变量上的调用

DAIDAI: 99

>>> daidai.get_grade()

A

以上便是实现类的定义和其方法的定义,实现了类的封装。

方法就是与实例绑定的函数,和普通函数不同,方法可以直接访问实例的数据。

Python允许对实例变量绑定任何数据,也就是说,对于两个实例变量,虽然它们都是同一个类的不同实例,但拥有的变量名称都可能不同。

>>> daidai.age = 8

>>> daidai.age

8

>>> xiongxiong.age    --这个实例变量并未绑定

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

AttributeError: ‘Student‘ object has noattribute ‘age‘

时间: 2024-11-10 15:10:04

Python 面向对象编程——类和实例的相关文章

Python 面向对象编程基础——初始化实例、类属性、方法

#1.初始化实例化属性.#可接受任意关键字参数,并把他们都作为属性赋值给实例.使用**kw,除了可以直接使用self.name = 'xxx'设置一个属性外,还可以通过setattr(self, 'name', 'xxx')设置属性.class Person(object):    def __init__(self, name, gender, **kw):        self.name = name        self.gender = gender        for k,v i

python学习day11 面向对象编程 类和实例

class Student(object): #class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的.通常,如果没有合适的继承类,就使用object类,这是所有类最终都会继承的类. def __init__(self,name,score): #通过定义一个特殊的__init__方法,在创建实例的时候,就把类的name,score等属性绑上去,__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__

【Python】[面向对象编程] 类和实例

1.注:必须牢记类是抽象的模板,而实例是根据类创建出来的一个个具体的“对象”2.定义类通过class 关键字:class 后面跟着类名,类名通常都是大写开头,接着是(object),表示类是从哪里继承俩的,所有类都继承 自object. class Student(object): pass 3.通过定义一个特殊的__init__方法,在创建实例的时候,就把name,score等属性绑上去: class Student(object): def __init__(self, name, scor

(转)Python 面向对象编程(一)

Python 面向对象编程(一) 虽然Python是解释性语言,但是它是面向对象的,能够进行对象编程.下面就来了解一下如何在Python中进行对象编程. 一.如何定义一个类 在进行python面向对象编程之前,先来了解几个术语:类,类对象,实例对象,属性,函数和方法. 类是对现实世界中一些事物的封装,定义一个类可以采用下面的方式来定义: class className: block 注意类名后面有个冒号,在block块里面就可以定义属性和方法了.当一个类定义完之后,就产生了一个类对象.类对象支持

python 面向对象编程(一)

一.如何定义一个类 在进行python面向对象编程之前,先来了解几个术语:类,类对象,实例对象,属性,函数和方法. 类是对现实世界中一些事物的封装,定义一个类可以采用下面的方式来定义: class className: block 注意类名后面有个冒号,在block块里面就可以定义属性和方法了.当一个类定义完之后,就产生了一个类对象.类对象支持两种操作:引用和实例化.引用操作是通过类对象去调用类中的属性或者方法,而实例化是产生出一个类对象的实例,称作实例对象.比如定义了一个people类: cl

Python面向对象编程总结(上)

在我学习python之前一直认为python是脚本型语言,不能用面相对象的方法进行编程,当我学习了python之后我发现我错了,python不但支持面相对象而且使用的人还挺多的.我从接触编程开始就是学习的Java语言,所以面相对象编程的思想在我的脑海里根深蒂固,让我一下从面向对象编程转换到面向过程编程还有一些不适应呢,所以我就来总结一下python面向对象编程的方法和过程.我将按照面向对象的构成要素来分析,依次为类和实例.属性.方法.封装.继承.多态,如果有什么问题还请大家积极指出,我所用的版本

python面向对象编程(OOP)

python作为一种解释性语言,其主要的编程方式就是面向对象,而且python的框架django也是主要面向对象的编程. 类(class)和对象(object) 类(class)是用来描述具有相同属性(attribute)和方法(method)对象的集合.对象(object)是类(class)的实例.比如学生都有名字和分数,他们有着共同的属性.这时我们就可以设计一个学生类,用来记录学生的名字和分数,并自定义打印出来. 属性(attribute):类里面用于描述所有对象共同特征的变量或数据.比如此

python面向对象编程进阶

python面向对象编程进阶 一.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1 class Foo(object): 2 pass 3 4 obj = Foo() 5 6 isinstance(obj, Foo) issubclass(sub, super)检查sub类是否是 super 类的派生类 1 class Foo(object): 2 pass 3 4 class B

Python面向对象编程——简介

Python面向对象编程--简介 编程范式 编程是程序员用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程 . 一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马,实现一个任务的方式有很多种不同的方式, 对这些不同的编程方式的特点进行归纳总结得出来的编程方式类别,即为编程范式. 不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路, 大多数语言只支持一种编程范式,当然也有些语言可以同时支持多种编程范式. 两种最重要的编程范式分别是面向