python学习第六课 --面向对象

面向对象

class Person(object):      --类 

def __init__(self,name):  --初始化函数  构造方法

self.name = name   --

print ‘---create :’,name

def say_name(self):   --方法

print ‘my name is %s’ %self.name

p1 = Person(‘gf1’)        --实例化

p2 = Person(‘gf2’)

p1.say_name()   --person.say_name(p1)

p2.say_name()   --person.say_name(p2)

应用场景:1.多个函数需要使用共同的值

2.需要创建多个事物,每个事物属性个数相同,但是值不相同

特性:

一、封装 将传进来的变量和类的指针封装在对象中,放在内存里,通过对象直接或self间接来调用变量

                      

二、继承 class s(f):  派生类继承了基类里的方法,不用再重复写相同功能的方法

 多继承,派生类可以继承多个基类,寻找方法的方式有 深度优先与广度优先

当类是经典类时,多继承的情况下,深度优先

当类是新式类时,多继承的情况下,广度优先

 如果当前类或者基类继承了object类,则是新式类,否则为经典类

  经典类:        class c1:          新式类:class c1(object):

pass                      pass

class c2(c1):               class c2(c1):

pass                                         pass

三、多态        python中没有

成员:

字段 方法和属性

      其中,只有普通字段是封装在对象中,其它都保存在类中,无论有多个对象,它们在内存中只创建一份

  • 字段

普通字段、静态字段  

普通字段由对象访问,静态字段由类访问(对象也可以访问)

能否改静态字段?能

  • 方法  

普通方法  由对象调用,至少一个self参数,执行时,自动将调用该方法的对象                      赋给self

静态方法        由类调用,没有默认参数,相当于类内的函数,这样就可以不通过对                                        象来调用方法而直接通过类来访问这个方法

类方法             由类调用,到少一个cls参数,执行时,自动将调用该方法的类复制                                                   给cls;相当于只能带cls参数的静态方法

class F(object):

def __init__(self,name):

self.name =name

def f1(self):

pass

@classmethod

def f2(cls):

pass

@staticmethod

def f3():

pass

obj = F()

obj.f1()

F.f2()

F.f3()

  • 属性

属性就是普通方法的变种,访问属性时就像访问字段一样

1.   属性的基本使用

定义时,在普通方法的基础上添加@property装饰器

定义时,仅有一个self参数

调用时,不需要括号

2.   定义方式

装饰器,即在方法上应用装饰器

@property  @方法名.setter  @方法名.deleter   (获取 修改 删除)

静态字段,即在类中定义值为property对象的静态字段

字段 = property(方法)

  • 类成员修饰符

公有成员        在任何地方都能访问

私有成员        只有在类内部才能访问  __name

__dict__ 能不能改?

时间: 2024-10-25 00:44:15

python学习第六课 --面向对象的相关文章

python学习第六课 --常用模块

常用模块 sys sys.argv  命令行参数列表,第一个元素是程序本身路径 sys.exit(n)  退出程序,正常退出时exit(0) sys.version sys.maxint  最大的int值 sys.path 返回模块的搜索路径 sys.paltform sys.stdout.wirte("hello") val = sys.stdin.readline()[:-1] logging import logging logging.basicConfig(filename=

Python第十六课(模块3)

Python第十六课(模块3)    >>>思维导图>>>中二青年 模块与包 模块 """ 三种来源 1.内置的 2.第三方的 3.自定义的 四种表示形式 1.py文件(******) 2.共享库 3.文件夹(一系列模块的结合体)(******) 4.C++编译的连接到python内置的 """ 导入模块 """ 先产生一个执行文件的名称空间 1.创建模块文件的名称空间 2.执行模

Python第十八课(面向对象基础)

Python第17课(面向对象基础)    >>>思维导图>>>中二青年 什么是继承? 继承是一种关系,描述两个对象之间,什么是什么的关系 例如麦兜,佩奇,猪刚鬣 都是猪啊, 在程序中,继承描述的是类和类之间的关系 例如a继承了b, a就能直接使用b已经存在的方法和属性 a称之为子类,b称之为父类,也称之为基类 为什么要使用继承 继承的一方可以直接使用被继承一方已经有的东西 其目的是为了重用已经有的代码,提高重用性 如何使用继承 语法 class 类名称(父类的名称):

Python学习笔记六(常用模块、面向对象基础)

一.random模块 import random print(random.random()) #0-1之间的小数 print(random.randint(1,5)) #1-5之间(包括1和5)的整数 print(random.randrange(1,5)) #1-5之间(包含1,不好包含5)的整数 print(random.choice(['a','b','c'])) #给定列表中任意元素 print(random.sample(['a','b','c','d'],2)) #给定列表中任意n

JAVA学习第六课(面向对象)

面向对象首先要先了解什么是面向对象? 面向对象:就是不断的和对象打交道. 早期解决问题,都是面向过程(简单来说就是一步一步怎么做,面对的是过程,即强调动作),如C语言,利用函数,进行函数的调用. 思想: 面向对象:强调的是对象,对象即指实体.c++,java,c# 例子:把大象装进冰箱 面向过程实现:1.打开冰箱  2.存储大象  3.关上冰箱 面向对象实现:(找到实体,实体封装着这些功能,也就是找到冰箱,冰箱具备打开.存储.关闭功能) 1.冰箱打开  2.冰箱存储   3.冰箱关闭 面向对象的

python学习笔记(六) - 面向对象编程

一. 类和实例 aa 二. 访问限制 bb 三. 继承和多态 cc 四. 获取对象信息 dd

Python学习--第六周

本节内容: 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法. 引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏,你就思考呀,人狗作战,那至少需要2个角色,一个是人, 一个是狗,且人和狗都有不同的技能,比如人拿棍打狗, 狗可以咬人,怎么描述这种不同的角色和他们的功能呢? 你搜罗了自己掌握的所有技能,写出了下面的代码来描述这两个角色 1 def person(name,age,sex,job): 2 data = { 3 '

Python学习(17)面向对象

目录 Python 面向对象 创建实例对象 Python内置类属性 Pyyhon对象销毁(垃圾回收) 类属性与方法 Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程. 接下来我们先来简单的

python 学习第八课 -- 异常 反射 socket

面向对象 相关 一.isinstance(obj,cls)  查看obj是否为cls的对象 issubclass(sub,super) 查看类sub是否为super的派生类 二. 异常处理 1.   异常基础 try: pass except Exception,e: print e e为Exception的对象,print e 就是print Exception中的__str__ 2.   异常种类 常用异常 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo