暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Python|面向对象

卓京IT之家 2018-09-26
548

《卓京IT之家》致力于打造碎片化学习理念,每天让你碎片时间收获一个技能。这里有:IT程序猿、攻城狮、码农们最需要的互联网发展趋势、最新行业动态、编程技巧、程序员笑话、IT技术资料、面试宝典、黑客技术、职场心得、生活感悟等等!点击上方"卓京IT之家",选择"置顶公众号",抓住碎片时间,抓住《卓京IT之家》,实现卓越人生。

前言


前面几篇文章给大家介绍了Python的基础部分内容,在第一篇文章中也讲解了Python是面向对象的编程语言,所以本篇文章重点讲解Python的面向对象,包括Python中如何定义类、对象、封装、继承、多态等

★ 目录 ★


01

类、对象定义及使用

02

属性和方法

03

构造方法

04

封装、继承、多态

01. 类、对象定义及使用

定义类语法

class  类名(父类):

            代码块

注意:()可有可无

eg:

class  Person:

    #这是一个类

创建对象(实例)语法

对象名=类名()

注意:Java语言在实例化对象是,采用new关键字,而Python语言不需要。

eg:

person=Person()

isinstance()语法

isinstance()是检测一个对象是否是一个类的实例,语法格式:

isinstance(对象,类),结果返回True和False

eg:

isinstance(person,Person),结果为True

02.属性和方法

属性

属性:分为类属性和对象属性

属性修饰符:私有属性、公共属性

类属性

class  Person:

        name="张三"   #name是类属性

对象属性

p1=Person()

p1.name="张三"  #name是对象属性

类属性和对象属性的区别?

类属性直接通过类名就可以调用,比如:

Person.name

对象属性必须通过对象名调用,比如:

person.name

公共属性

没有任何修饰符,该类型的属性可以被任意一个对象所调用,比如:

name="张三"

私有属性

私有属性,不能通过对象调用,也不能通过类名调用,只能在本类中调用,类似Java语言中的private,如果想要在外部调用,则需提供get和set方法,私有属性通过双下划线修饰__

eg:

__name="张三"   #这是一个私有属性

方法

方法分类:对象方法、类方法、静态方法

对象方法

定义在类中的函数被称为方法,所有的实例都可以访问

注意:对象方法,必须默认传递一个参数self,类似java中的this关键字

调用:只能通过对象调用

eg:

class Person:

     def  eat(self):

            代码块

#调用

person=Person()

person.eat()

类方法

被@classmethod修饰的方法,被称为类方法

参数:cls

调用:可以通过类调用

eg:

@classmethod

def sleep(cls):

        print("睡觉")

#调用

Person.sleep()

静态方法

被@staticmethod修饰的方法,被称为静态方法

参数:无参数

调用:可以通过类和对象调用

@staticmethod

def playDD():

    print("打豆豆")

#调用

Person.playDD() #类名调用

person.playDD() #对象调用

03.构造方法

构造方法

构造方法是以双下划线__开头,双下划线__结尾,方法名叫init,构造方法不需要自己调用,在实体化对象时调用,和Java中的构造方法一样,语法格式:

def  __init__(self,参数):

    代码块

eg:

def  __init__(self,name,age):

        self.__name=name

        self.__age=age

04.封装

封装

封装,是给类中的属性提供get、set方法,语法格式:

def  set方法(self):

    代码块

def  get方法(self):

    代码块

eg:

def  setName(self,name):

    self.__name=name

def  getName(self):

    return self.__name

get、set装饰器

get方法装饰器:@property

set方法装饰器:@属性名.setter

调用:直接通过对象.属性名即可

注意:get方法修饰器必须写到set方法修饰器前面

eg:

@property

def name(self):

    return self.__name


@name.setter

def name(self,name):

    self.__name=name

06.继承

继承语法

class  子类(父类1,父类2):

通过语法格式可以看出Python语言支持多继承,Java语言只支持单继承

issubclass()

issubclass()方法作用:

检测一个类是否是另外一个类的子类

语法:

issubclass(子类,父类)

方法重写

像Java语言一样,Python语言也同样支持方法的重写override

多继承

查看一个类的继承关系使用:

类名.__bases__属性

多继承特点:

一层一层获取,先找自己的类中,再从继承关系中找

07.多态

多态

多态的概念,和Java中的概念是一样的。可以看下面的例子理解,或者看视频教程

class Person:

def __init__(self,name):

    self.__name=name


@property

def name(self):

    return self.__name

@name.setter

def name(self,name):

    self.__name=name


class Boy:

def __init__(self,name):

    self.__name=name


@property

def name(self):

    return self.__name

@name.setter

def name(self,name):

    self.__name=name


class Girl:

    pass


def eat(obj):

    print("%s正在吃饭"%obj.name)

p=Person("战三")

b=Boy("小孩子")

g=Girl()

eat(g),参数p、b都没有问题,但是g就会有问题

Python精选


围观

Python|和Python的第一次相遇


热文

Python|运算符-分支语句-循环


热文

Python|数据类型List-Set-Tuple-Dictionary


热文

Python|函数


加关注

公众号:卓京IT之家

卓越人生

从卓京开始

长按识别左侧二维码,关注我们


文章转载自卓京IT之家,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论