面向对象是指用类来描述一个对象(实例),用类来建立实例与实例的关联关系

对象 : object     实例 : instance

1 类

1.1 什么是类

类是用来描述对象的工具,用类可以创建一个或多个同类对象。类 : class

1.2 类的作用

用来描述对象

用来创建具有相同属性的同类对象

1.3 类的创建

class 类名(继承列表):
    ”””
        类文档字符串

    “““
    实例方法(类内的函数methed)定义

    类变量定义

    类方法(@classmethod)定义
    静态方法(@staticmethod)定义

注意:

1、类名必须是标识符

2、类名实质上是变量,它绑定一个类

3、类的定义的前后要加两个空行以告诉解释执行器,类的定义已经开始和结束

4、在python程序中,每个实例可以有自己的变量,每个实例变量有自己独立的作用域

示例

# 定义一个类
class Car:
    pass

# 创建一个Car实例
c1 = Car()
c2 = Car()

其实我们经常用的list函数也是类,在定义列表时(a = list()),其实也是实例化的过程。

1.4 实例变量的语法调用

实例.变量名
实例.变量名 = 表达式 # 创建或修改实例变量
v = 实例.变量名  # 获取实例变量绑定的对象

注意:

实例变量的首次赋值为创建,再次赋值为改变变量的绑定关系

2 实例方法

class 类名(继承列表):
    def 实例方法名(self, 参数1, 参数2, ...):
        "实例方法的文档字符串"
        语句块

注意:

1、实例方法的本质是函数,确切地说是定义在类内的函数。

2、实例方法属于类的属性。

3、实例方法的第一个参数为调用该方法的实例,一般命名为self

4、实例方法中若没有return语句则返回None

2.1 实例方法的调用

实例.实例方法名(调用参数)

类名.实例方法名(实例,调用参数)

上数两种方式均可。

3 构造方法

构造方法也称之为初始化方法

语法格式

class 类名(继承列表):
    def __init__(self [, 参数列表]):
        语句块

注意:

1、构造方法名必须是init。

2、每一个类内只能由一个构造方法init起作用。

3、构造方法会在实例生成时自动调用,且将实例自身(作为实参)对标init中的self形参。

4、构造方法中若无return语句,则返回None

4 析构方法

析构方法语法

语法格式 :
  class 类名(继承列表):
      def __del__(self):
          语句块

注意:

1、析构方法在对象被销毁时自动调用

2、在python语言中,建议不要在对象销毁时做任何事情,因销毁的时间难以确定

5 预置实例属性(实例变量):

5.1 dict属性:

通常每一个对象(实例)都有一个__dict__属性

__dict__属性绑定一个存储此实例自身变量的字典

例如:

class Dog:
    def __init__(self, colour,name):
        self.colour = colour
        self.name = name

    def dog(self):
        print(self.name,"的体毛颜色是",self.colour)

dog1 = Dog("white","husky")

dog1.dog()

print(dog1.__dict__)

运行结果

husky 的体毛颜色是 white
{'name': 'husky', 'colour': 'white'}

5.2 doc属性

记录文档字符串, 用于help帮助

此文档字符串与类的文档字符串相同

5.3 class属性

用于绑定创建此实例的类对象(类实例)

注:

可以借助此属性来创建同类对象

可以借助此属性来访问类对象(类实例)

class Dog:
    def __init__(self, colour,name):
        self.colour = colour
        self.name = name

    def dog(self):
        print(self.name,"的体毛颜色是",self.colour)

dog1 = Dog("white","husky")

dog2 = dog1.__class__("black","Beagle")  # 创建dog2

dog1.dog()
dog2.dog()

print(dog1.__dict__)

运行

husky 的体毛颜色是 white
Beagle 的体毛颜色是 black
{'colour': 'white', 'name': 'husky'}

5.3 类变量

是指在类class 内定义的变量(注意:此变量属于类,不属于此类的实例)

类变量可以通过该类直接访问

类变量可以通过类的实例直接访问

类变量可以通过此类的对象的class属性间接访问

Python学习笔记016——面向对象的更多相关文章

  1. python 学习笔记7 面向对象编程

    一.概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强..." ...

  2. python学习笔记六 面向对象相关下(基础篇)

    面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以将多函数中公用的变量封装到对象中) 对象,根据模板创建的 ...

  3. python学习笔记_week6_面向对象

    面向对象 介绍(特性(class.object--->封装.继承,多态)).--->世界万物,皆可分类:世界万物,皆可对象 只要是对象,就肯定属于某种品类:只要是对象,就肯定有属性 你是上 ...

  4. python学习笔记(七):面向对象编程、类

    一.面向对象编程 面向对象--Object Oriented Programming,简称oop,是一种程序设计思想.在说面向对象之前,先说一下什么是编程范式,编程范式你按照什么方式来去编程,去实现一 ...

  5. python学习笔记(6)--面向对象学习

    本节内容:   面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法.   引言 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做(人狗大战)的游戏,你就思 ...

  6. python学习笔记(10):面向对象

    一.类和实例 1.类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 2.对象:通过类定义的数据结构实例.对象包括两个数据成员( ...

  7. python学习笔记(7): 面向对象

    class Foo: #类中的函数 def bar(self): #功能阐述 print('Bar') pass def hello(self,name): print('i am %s' %name ...

  8. Python学习笔记之面向对象

    下面是初步总结的Python的面向对象的参数定义,后面会逐渐完善面向对象的相关知识.

  9. Python学习笔记捌——面向对象高级编程

    __slots__特殊变量的使用: 由于Python是动态语言,允许先编写类,然后在创建实例的时候添加属性或者方法:而__slots__特殊变量就是,限制往类里添加属性的: 在创建类的时候,使用__s ...

随机推荐

  1. go语言基础之结构体普通变量初始化

    1.结构体 1.1.结构体类型 有时我们需要将不同类型的数据组合成一个有机的整体,如:一个学生有学号/姓名/性别/年龄/地址等属性.显然单独定义以上变量比较繁琐,数据不便于管理. 结构体是一种聚合的数 ...

  2. css表格单元格中的长文本的显示问题

    自动换行问题,正常字符的换行是比较合理的,而连续的数字和英文字符常常将容器撑大,挺让人头疼,下面介绍的是CSS如何实现换行的方法 对于div,p等块级元素 正常文字的换行(亚洲文字和非亚洲文字)元素拥 ...

  3. 【SDN】SDN相关资料--了解一下电信领域的SDN

    SDN相关资料 数据中心架构下ospf bgp如何选择及优缺点? - 数据中心 - 知乎 组播扩展OSPF_百度百科 carrier.huawei.com/cn/products/fixed-netw ...

  4. Android 如何修改默认输入法

    前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net        ...

  5. DateNavigator

    <Border BorderThickness="1,1,1,1" BorderBrush="Black" Grid.Column="1&quo ...

  6. [转] ssh穿透??未验证。。。

    一. SSH ProxyCommand 实践 http://www.cnblogs.com/shanpow/p/4264867.html 二. SSH穿越跳板机:一条命令跨越跳板机直接登陆远程计算机 ...

  7. System.ComponentModel.Component : MarshalByRefObject, IComponent, IDisposable

    #region 程序集 System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 // C:\Windows\ ...

  8. 织梦DeDeCms会员登录或退出跳转到首页的修改方法

    会员在主页登陆后,默认会跳转到会员中心,如果我们想登陆后,跳转到网站主页,那么就请参考下面的方法实现织梦DeDeCms会员登录或退出跳转到首页. 1.在根目录的member目录中找到index_do. ...

  9. 新浪面试题:只允许使用++操作符实现加减乘除运算(c语言版)

    //假定a,b都是正整数,只允许使用++而不使用-,--,*,/操作符的情况下实现加减乘除运算 //使用++实现加法: int jiafa(int a,int b){ for (int i=0;i&l ...

  10. java 散列与散列码探讨 ,简单HashMap实现散列映射表运行各种操作示列

    java 散列与散列码探讨 ,简单HashMap实现散列映射表运行各种操作示列 package org.rui.collection2.maps; /** * 散列与散列码 * 将土拔鼠对象与预报对象 ...