《卓京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精选
围观
热文
热文
热文
加关注
公众号:卓京IT之家

卓越人生
从卓京开始
长按识别左侧二维码,关注我们