1、Python3 面向对象

1)类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
     2)方法:类中定义的函数。
     3)类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
    4)数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
    5)方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
    6)局部变量:定义在方法中的变量,只作用于当前实例的类。
    7)实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用 self 修饰的变量。
    8)继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。
      例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
    9)实例化:创建一个类的实例,类的具体对象。
   10)对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

2、类定义

语法格式如下:
class ClassName:
    <statement-1>
    .
    .
    .
    <statement-N>

3、类对象

类对象支持两种操作:属性引用和实例化
属性引用使用和 Python 中所有的属性引用一样的标准语法:obj.name。
类对象创建后,类命名空间中所有的命名都是有效属性名

class Dog:#定义基本属性name = ''      # 狗的名称color = ''     # 狗的颜色#两个下划线开头  定义私有属性,私有属性在类外部无法直接进行访问__kind = ''      # 狗的品种#构造方法def __init__(self,name,color,kind):self.name = nameself.color = colorself.kind = kind#打印信息def printInfo(self):print('狗的品种是:',self.kind)

4、继承

语法格式:
class DerivedClassName(BaseClassName1):
    <statement-1>
    .
    .
    .
    <statement-N>
    
    1)需要注意圆括号中基类的顺序,若是基类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 
即方法在子类中未找到时,从左到右查找基类中是否包含方法。

2)BaseClassName(示例中的基类名)必须与派生类定义在一个作用域内。除了类,还可以用表达式,
基类定义在另一个模块中时这一点非常有用

class SubDog(Dog):price = .0   #狗的价格#初始化def __init__(self,name,color,kind,price):Dog.__init__(self,name,color,kind)self.price = price#覆写父类方法(重写)def printInfo(self):print('狗的品种是:',self.kind,',价格为',self.price)

 5、多继承

语法格式:
    class DerivedClassName(Base1, Base2, Base3):
    <statement-1>
    .
    .
    .
    <statement-N>
    
    注意:
        尽量避免使用多继承,因为父类有相同的变量和方法,则会按照继承的顺序,
    从左到右依次匹配相应的变量和方法,导致获取的不是自己想要的

#参加跳舞比赛
class Dance():danceName = ''   #舞蹈名称sort = 0    #舞蹈获取的名次#初始化def __init__(self,name,sort):self.danceName = nameself.sort = sort#比赛结果def result(self):print('我参加比赛的舞蹈名为: %s,获得第%s名'%(self.danceName,1))#多继承
class SpeakDog(SubDog,Dance):isSpeak = Falsedef __init__(self,name,color,kind,price,danceName,sort,isSpeak):SubDog.__init__(self,name,color,kind,price)Dance.__init__(self,danceName,sort)self.isSpeak = isSpeakdef printInfo(self):if self.isSpeak:print('%s是一只会叫的狗' % self.name)else:print('%s是一只不会叫的狗' % self.name)

6、类属性与方法

1)类的私有属性
    __private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。

2)类的方法
    在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self,
且为第一个参数,self 代表的是类的实例。
self 的名字并不是规定死的,也可以使用 this,但是最好还是按照约定是用 self。

3)类的私有方法
    __private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类的外部调用。self.__private_methods

#类的私有属性实例
class CounterTest:__secretCount = 0  # 私有变量publicCount = 0    # 公开变量def count(self):            # 公共方法self.__secretCount += 1self.publicCount += 1print('这是公共方法,私有变量__secretCount的值为:',self.__secretCount)def __addNum(self,a,b):    # 私有方法return a+bcounter = CounterTest()
counter.count()
print('公有变量publicCount的值为:',counter.publicCount)
# print(counter.__secretCount)  # 报错,实例不能访问私有变量#程序入口
if __name__ == '__main__':# 实例化类dog = Dog('小黑','黑色','哈士奇')print(dog.name, dog.color, dog.kind)subDog = SubDog('小布丁','棕色','泰迪',1239.2)subDog.printInfo()  #子类调用重写方法print("调用父类重写的方法:",end='')super(SubDog,subDog).printInfo()  #用子类对象调用父类已被覆盖的方法speakdog = SpeakDog('小布丁','棕色','泰迪',1239.2,'恭喜发财',1,True)speakdog.printInfo()speakdog.result()

7、给各位大佬奉茶

测试笔记

#1、Python3 面向对象
print()
print('1、Python3 面向对象')
'''
1)类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
2)方法:类中定义的函数。
3)类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
4)数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
5)方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
6)局部变量:定义在方法中的变量,只作用于当前实例的类。
7)实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用 self 修饰的变量。
8)继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
9)实例化:创建一个类的实例,类的具体对象。
10)对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。'''
# 2、类定义
print()
print('2、类定义')
'''
语法格式如下:
class ClassName:<statement-1>...<statement-N>
'''
# 3、类对象
print()
print('3、类对象')
'''类对象支持两种操作:属性引用和实例化。
属性引用使用和 Python 中所有的属性引用一样的标准语法:obj.name。
类对象创建后,类命名空间中所有的命名都是有效属性名
'''
class Dog:#定义基本属性name = ''      # 狗的名称color = ''     # 狗的颜色#两个下划线开头  定义私有属性,私有属性在类外部无法直接进行访问__kind = ''      # 狗的品种#构造方法def __init__(self,name,color,kind):self.name = nameself.color = colorself.kind = kind#打印信息def printInfo(self):print('狗的品种是:',self.kind)# 4、继承
'''
语法格式:
class DerivedClassName(BaseClassName1):<statement-1>...<statement-N>1)需要注意圆括号中基类的顺序,若是基类中有相同的方法名,而在子类使用时未指定,python从左至右搜索
即方法在子类中未找到时,从左到右查找基类中是否包含方法。2)BaseClassName(示例中的基类名)必须与派生类定义在一个作用域内。除了类,还可以用表达式,
基类定义在另一个模块中时这一点非常有用
'''
class SubDog(Dog):price = .0   #狗的价格#初始化def __init__(self,name,color,kind,price):Dog.__init__(self,name,color,kind)self.price = price#覆写父类方法(重写)def printInfo(self):print('狗的品种是:',self.kind,',价格为',self.price)#5、多继承
'''
语法格式:class DerivedClassName(Base1, Base2, Base3):<statement-1>...<statement-N>注意:尽量避免使用多继承,因为父类有相同的变量和方法,则会按照继承的顺序,从左到右依次匹配相应的变量和方法,导致获取的不是自己想要的
'''
#参加跳舞比赛
class Dance():danceName = ''   #舞蹈名称sort = 0    #舞蹈获取的名次#初始化def __init__(self,name,sort):self.danceName = nameself.sort = sort#比赛结果def result(self):print('我参加比赛的舞蹈名为: %s,获得第%s名'%(self.danceName,1))#多继承
class SpeakDog(SubDog,Dance):isSpeak = Falsedef __init__(self,name,color,kind,price,danceName,sort,isSpeak):SubDog.__init__(self,name,color,kind,price)Dance.__init__(self,danceName,sort)self.isSpeak = isSpeakdef printInfo(self):if self.isSpeak:print('%s是一只会叫的狗' % self.name)else:print('%s是一只不会叫的狗' % self.name)#6、类属性与方法
'''
1)类的私有属性__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。2)类的方法在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self,
且为第一个参数,self 代表的是类的实例。
self 的名字并不是规定死的,也可以使用 this,但是最好还是按照约定是用 self。3)类的私有方法__private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类的外部调用。self.__private_methods
'''#类的私有属性实例
class CounterTest:__secretCount = 0  # 私有变量publicCount = 0    # 公开变量def count(self):            # 公共方法self.__secretCount += 1self.publicCount += 1print('这是公共方法,私有变量__secretCount的值为:',self.__secretCount)def __addNum(self,a,b):    # 私有方法return a+bcounter = CounterTest()
counter.count()
print('公有变量publicCount的值为:',counter.publicCount)
# print(counter.__secretCount)  # 报错,实例不能访问私有变量#程序入口
if __name__ == '__main__':# 实例化类dog = Dog('小黑','黑色','哈士奇')print(dog.name, dog.color, dog.kind)subDog = SubDog('小布丁','棕色','泰迪',1239.2)subDog.printInfo()  #子类调用重写方法print("调用父类重写的方法:",end='')super(SubDog,subDog).printInfo()  #用子类对象调用父类已被覆盖的方法speakdog = SpeakDog('小布丁','棕色','泰迪',1239.2,'恭喜发财',1,True)speakdog.printInfo()speakdog.result()

结果:

C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\python.exe F:/python-space/test/ObjectStudy.py1、Python3 面向对象2、类定义3、类对象
这是公共方法,私有变量__secretCount的值为: 1
公有变量publicCount的值为: 1
小黑 黑色 哈士奇
狗的品种是: 泰迪 ,价格为 1239.2
调用父类重写的方法:狗的品种是: 泰迪
小布丁是一只会叫的狗
我参加比赛的舞蹈名为: 恭喜发财,获得第1名Process finished with exit code 0

九、Python 面向对象相关推荐

  1. 九 Python面向对象

    九 Python面向对象 1. 面向对象与面向过程 1-1. 介绍 面向对象编程:Object Oriented Programming,简称OOP,是一种程序设计方法. 1-2. 概念及术语 术语 ...

  2. Python学习笔记(十九)面向对象 - 继承

    Python学习笔记(十九)面向对象 - 继承 一.继承的概念 # 继承:子类继承父类的所有方法和属性# 1. 子类 class A(object):def __init__(self):self.n ...

  3. Python编程基础:第三十九节 面向对象编程Object Oriented Programming

    第三十九节 面向对象编程Object Oriented Programming 前言 实践 前言 到目前为止我们都是函数式编程,也即将每一个功能块写为一个函数.其实还有一种更常用的编程方式被称为面向对 ...

  4. python面向对象编程的三大特性_Python面向对象总结及类与正则表达式详解

    Python3 面向对象 -------------------------------------------------------------------------------- 一丶面向对象 ...

  5. Python面向对象的编程

    提示:本文代码完全来源于哔哩哔哩<10小时搞定Python面向对象(完整版)>,本文用途仅限于Python编程的学习. 网址:https://www.bilibili.com/video/ ...

  6. python面向对象3-多层继承、super()、私有权限、多态、类属性实例属性、类方法和静态方法

    python面向对象1–类.对象.属性.魔法方法 python面向对象2–综合案例:烤地瓜.搬家具.单继承.多继承 python面向对象3-多层继承.super().私有权限.多态.类属性实例属性.类 ...

  7. [python]面向对象高级

    目录 一 isinstance(obj,cls)和issubclass(sub,super) 二 反射 三 __setattr__,__delattr__,__getattr__ 四 二次加工标准类型 ...

  8. Python面向对象—面向对象高级

    文章目录 一.isinstance和issubclass 二.反射 1 什么是反射 2 python面向对象中的反射 3 反射的好处 三 .__ setattr__,__ delattr__,__ g ...

  9. python 面向对象高级应用(三)

    目录: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__getattr__ 二次加工标准类型(包装) __ ...

  10. python面向对象的优点_Python面向对象编程——总结面向对象的优点

    Python面向对象编程--总结面向对象的优点 一.从代码级别看面向对象 1.在没有学习类这个概念时,数据与功能是分离的 def exc1(host,port,db,charset): conn=co ...

最新文章

  1. actuator的原理_使用Spring Boot Actuator监视Java应用程序
  2. VC/MFC列表CListCtrl类的LVCOLUMN和LVITEM详解
  3. python编写一个函数判断一个数是否为素数是则返回yes_编写函数isPrime,判断一个数字是否为素数,是则返回字符串 YES ,否则返回字符串 NO 。_学小易找答案...
  4. C/C++中字符串切割(split)
  5. php 接摄像头数据_详解一个交换机能带动多少个网络监控摄像头?
  6. 标准情况下绝对湿度与相对湿度excel表
  7. 三大抽样分布:卡方分布,t分布和F分布的简单理解
  8. PR音频处理——音乐逐渐萎靡的效果
  9. Excel中输入整数却总是显示小数,如何调整?
  10. 微信公众号开发之(35)地图导航
  11. IPS入侵防御系统、IDS入侵检测系统
  12. 软件质量属性的两个模型(Software Quality Attributes)—中英文对照
  13. 关于恢复误删Word文档的步骤详解
  14. 对DTI进行概率追踪(Probability tracking)(使用的是PANDA工具)
  15. Java与Unix时间戳的相互转换
  16. 致同携手嘉宾探究国有企业改革与战略转型
  17. postgreSQL+数组及复合类型=王炸
  18. 时光金科php,重庆金科博翠宸章 | ACA麦垦景观
  19. NVIDIA之TLT迁移学习训练自己的数据集
  20. prometheus详解

热门文章

  1. 建筑八大员培训湖北施工员培训加强施工员工程测量技能的培训
  2. 京东京麦商家开放平台的消息推送架构演进之路
  3. 理想边界尺寸怎么算_预算10万,沃兰多与哈弗F7应该怎么选?网友:论油耗它的优势明显...
  4. .net 鼠标移入弹出页面_jq: 事件-鼠标
  5. 2022年9月奥鹏网络教育大学英语B统考题库试题
  6. IE中报SCRIPT1004: 缺少 ‘;‘错误原因
  7. 三年级计算机课说课稿,小学信息技术说课稿
  8. cs战队服务器位置,CS1.6十大经典战队简介
  9. hnu 数字电路 实验1.3 模型机指令译码器
  10. BiGCN(谣言检测)踩坑记录