首页 > 编程语言 >Python_15面向对象

Python_15面向对象

时间:2022-08-31 14:47:19浏览次数:49  
标签:__ 15 name Python self 面向对象 print age def

一、面向对象概念和基本语法

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

二、类的创建及调用

1、创建类
使用 class 关键字来创建一个新类,class 之后为类的名称()并以冒号结尾:

 1 #第五章面向对象概念和基本语法
 2 class People():
 3     def __init__(self,name,age,sex): #__init__方法在Python面向对象编程中,称为构造方法,也称为初始化方法
 4         self.name = name
 5         self.age = age
 6         self.sex = sex
 7     def collecting(self,money):
 8         print(self.name+'本次收银: $'+str(money))
 9 
10 bulanni = People('布兰尼',35,'女')  #创建实例对象语法
11 print(bulanni.name)            #对象可以包含属性
12 print(bulanni.age)
13 print(bulanni.sex)
14 bulanni.collecting(500)        #对象里面可以包含方法

2、创建对象
3、__init__函数
我们必须先了解内置的 __init__() 函数。
所有类都有一个名为 __init__() 的函数,它始终在启动类时执行。
使用 __init__() 函数将值赋给对象属性,或者在创建对象时需要执行的其他操作:

 1 #第五章面向对象概念和基本语法
 2 class People():
 3     def __init__(self,name,age,sex): #__init__方法在Python面向对象编程中,称为构造方法,也称为初始化方法
 4         self.name = name
 5         self.age = age
 6         self.sex = sex
 7     def collecting(self,money):
 8         print(self.name+'本次收银: $'+str(money))
 9 
10 bulanni = People('布兰尼',35,'女')  #创建实例对象语法
11 print(bulanni.name)            #对象可以包含属性
12 print(bulanni.age)
13 print(bulanni.sex)
14 bulanni.collecting(500)        #对象里面可以包含方法

4、对象方法
对象也可以包含方法。对象中的方法是属于该对象的函数。

 1 class Person:
 2   def __init__(self, name, age):
 3     self.name = name
 4     self.age = age
 5 
 6   def myfunc(self):
 7     print("Hello my name is " + self.name)
 8 
 9 p1 = Person("Bill", 63)
10 p1.myfunc()

5、self参数
self 参数是对类的当前实例的引用,用于访问属于该类的变量。
它不必被命名为 self,您可以随意调用它,但它必须是类中任意函数的首个参数:

 1 class Person:
 2   def __init__(mysillyobject, name, age):
 3     mysillyobject.name = name
 4     mysillyobject.age = age
 5 
 6   def myfunc(abc):
 7     print("Hello my name is " + abc.name)
 8 
 9 p1 = Person("Bill", 63)
10 p1.myfunc()

三、面向对象的三大特性

三大特性包括:
封装
继承
多态

1、封装
对于私有的属性,不能被外界使用,但不可避免的要被访问和修改,我们就提供一些方法进行修改和对外访问接口,这种方式叫做封装 - 将变化隔离 - 提高复用性 - 提高安全性。

 1 class People():
 2     def __init__(self,name,age):
 3         self.__name = name
 4         self.__age = age
 5 
 6     def getName(self):      #方法封装
 7         return self.__name
 8 
 9     def setName(self,n):
10         self.__name = n
11 
12 bulanni = People('布兰妮',28)
13 print(bulanni._People__name)  #数据封装
14 bulanni.setName('勒布朗')
15 print(bulanni.getName())   #方法封装

2、继承
继承允许我们定义继承另一个类的所有方法和属性的类。
父类是继承的类,也称为基类。
子类是从另一个类继承的类,也称为派生类。

 1 #继承基础02
 2 class People():
 3     def __init__(self,name,age):
 4         self.name = name
 5         self.age = age
 6     def say(self,content):
 7         print(self.name+'说:'+content)
 8 
 9 class Student(People): #写上父类名字
10     def __init__(self,name,age,grade):
11         People.__init__(self,name,age) #字父类都存在构造关系时,子类必须显示的调用父类的构造方法
12 
13         self.grade = grade
14     def study(self,course):
15         print(self.name+' 学习:'+course)
16 
17 bulanni = People('布兰尼',28)
18 bulanni.say('各位好')
19 xiaoming = Student('小明',12,'六年级')
20 print(xiaoming.name)
21 xiaoming.say('你好!')
22 xiaoming.study('数学')
23 print(isinstance(bulanni,People))  #判断对象是否属于后面的类
24 print(isinstance(xiaoming,People))
25 print(issubclass(Student,People))  #判断子类是否属于父类

3、多态
Java中多态性,可以理解为一个事物的多种形态,比如我们说猫是动物、猫也是猫,猫就具备了不同的形态。同样python中也支持多态,但是是有限的的支持多态性,
主要是因为python中变量的使用不用声明,所以不存在父类引用指向子类对象的多态体现,同时python不支持重载。

 1 #面向抽象,多态2022.07.17PM
 2 from abc import ABCMeta,abstractmethod
 3 
 4 class File(metaclass=ABCMeta):
 5     @abstractmethod
 6     def doubleClick(self):   #抽象方法不包含任何实现
 7         pass
 8 
 9 class TxtFile(File):
10     def doubleClick(self):   #子类继承了抽象类,就必须实现抽象类的抽象方法
11         print('打开txt文件')
12 
13 class ExeFile(File):
14     def doubleClick(self):
15         print('执行exe文件')
16 
17 class VideoFile(File):
18     def doubleClick(self):
19         print('播放视频文件')
20 
21 def open(fileObject):    #多态性,传不同的对象,执行不同的方法
22     fileObject.doubleClick()
23 
24 txtFile = TxtFile();exeFile = ExeFile();videoFile = VideoFile()
25 open(txtFile)   #多态性

标签:__,15,name,Python,self,面向对象,print,age,def
From: https://www.cnblogs.com/yyym/p/16636248.html

相关文章

  • Python 测试开发实战进阶,技能对标阿里 P6+,挑战年薪 50W+!
    ⬇️点击“下方链接”,提升测试核心竞争力!>>更多技术文章分享和免费资料领取软件测试行业正处于大变革时期,在互联网业务快速迭代和质量保障要求下,各种新技术层出不穷,测试......
  • Python 测试开发 20+ 项目实战,提升 5 大测试核心技能
    ⬇️点击“下方链接”,提升测试核心竞争力!>>更多技术文章分享和免费资料领取软件测试行业从业门槛越来越高,传统手工测试人员逐渐被淘汰,而测试开发工程师则供不应求,成为B......
  • Python学习-Day2
    1、算数运算符/除10/20=0.5//取整数25//10=2%取余数25%10=5"幂 2"4=16*在字符串中计算结果就是字符串重复指定次数的结果eg:......
  • Python代码模板
    #!/usr/bin/envpython#-*-encoding:utf-8-*-classClassName:def__init__(self,arg1,arg2):self.arg1=arg1self.arg2=arg2......
  • CCF 201503-1 图像旋转(C++)
    好像旋转矩阵有更好的做法,但是我觉得这样也足够了,如果需要更好的做法,大家得自己在去找一下。我主要是找了下规律,然后做出来的#include<iostream>#include<bits/stdc+......
  • 安卓手机手机用 QPython 写 Python:hello world
    1.安装QPython在应用市场中搜索QPython,搜到以后进行安装。我装过了,所以上图显示“打开”,你可能显示“安装”,点击即可。需要设置存储权限,方便在手机上存代码。......
  • centos7 安装python-libpcap
    1.安装依赖yuminstalllibpcaplibpcap-devel2.安装python依赖(python3.6以上版本)$pip3installCython$pip3installpython-libpca3.验证在python命令行......
  • [LeetCode] 1315. Sum of Nodes with Even-Valued Grandparent 祖父节点值为偶数的节
    Giventhe root ofabinarytree,return thesumofvaluesofnodeswithan even-valuedgrandparent.Iftherearenonodeswithan even-valuedgrandparent......
  • 学习:python进阶 内置排序
    列表sort()方法原地排序  内置函数sorted(),复制一份新数据  高级用法     ......
  • 学习 Python进阶 选择排序
    【原理】循环列表,每次循环找到列表中的最小数,放到一个位置上再次循环找到剩下列表中的最小数,放在之前找到的最小数下一个位置最后,实现升序排列 思考   多次......