博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python3面向对象(1)
阅读量:6939 次
发布时间:2019-06-27

本文共 2767 字,大约阅读时间需要 9 分钟。

1.定义类,实例化对象:

class Nanny(object):    #class 定义一个类名Nanny,这个类继承了object    def __init__(self,name,age):    #__init__初始化方法,在创建对象的时候自动调用,第一个参数是必须有的self指的是创建的对象,        self.name = name        self.age = age    def cook(self):   #在类中的普通函数叫做方法;都有一个self参数;可以被创建的对象调用        print("这是一个做饭的过程")obj1 = Nanny("小红",22)   #创建一个obj1对象,传入参数;这个参数被传入__init__初始化方法中print(obj1.name)print(obj1.age)obj1.cook()  #调用类中的方法

 2类中的方法(普通方法(实例化方法),类方法,静态方法)和 类属性

class Nanny(object):    Nanny_name = "this is Nanny name"   #这是一个类属性,可以通过类型.调用    def __init__(self,name,age):        self.name = name        self.age = age    @classmethod #这是一个类方法;通过@classmethod     def cook1(cls):  #方法的参数是cls 代表的这个类        print("我是一个类方法")    @staticmethod   #这是一个静态方法,通过@staticmethod    def cook2():  #方法里面可以没有参数        print("我是一个静态方法:这是我的使用说明")    def cook(self):        print("这是一个做饭的过程")obj1 = Nanny("小红",22)print(obj1.name)print(obj1.age) #方法的调用,实例化的对象可以调用类中的所有方法obj1.cook()obj1.cook1()obj1.cook2()   #但是类名只能调用静态方法和类方法Nanny.cook1()Nanny.cook2()

 3继承

何为继承,继承既新建的类具有被继承类的属性和方法;继承的目的是为了减少不必要的代码,实现代码的重复利用。那如何实现继承呢看代码:

class Parsenclass1(object):  #定义一个类让这个类继承object(python3中默认继承object;python2中需要指定)    Parsen_var = "this is parsen var"    def __init__(self):        print("111")    def f1(self):        print("这是Parsenclass1的f1")    def f2(self):        print("这是Parsenclass1的f2")       def f3(self):      print("这是Parsenclass1的f3")
  def f4(self):      print("这是Parsenclass1的f4")
class son1(Parsenclass1): #定义一个son1类,让这个类继承 Parsenclass1;那么这个类型具有父类中的所有属性和方法(除去私有的,暂时不表,后面介绍)   son1_var = "son1关键字"   def __init__(self):     print("这是son1")   def f1(self):     print("这是son2的f1")   def f2(self):     print("这是son1的f2")     self.f1() class son2(Parsenclass1): #定义一个son2,和son1的父类一样   son2_var = "这是son2关键字"   def __init__(self):     print("这是son2")   def f1(self):     print("这是son2的f1")   def f2(self):     print("这是son2的f2")      def f3(self):      print("这是son2的f3") class son_son(son1,son2):  #定义一个son_son类,继承son1和son2;这是个多继承    son_son_var = "这是son_son的关键字"    def __init__(self):        print("这是son_son")    def f1(self):        print("这是son_son的f1")obj1 = son_son()  #创建对象obj1.f2()  # 调用f2()函数 obj1.f3() obj1.f4()
print(son_son.__bases__)

执行结果如下:

这是son_son  #__init__函数默认执行这是son1的f2   #当执行f2方法时,现在创造该对象的类中寻找,如果找到了就执行,如果没有找到则会向父类中寻找;这个父类时son1和son2,先在son1中寻找;找到了执行f2();当执行f2()函数的时候遇到了                   self.f1()函数,那这个f1函数指向的又是谁呢;创建类的时候self代表的是实例化对象(obj1),所以先去创建这个对象的类(son_son)中寻找f1函数;这是son_son的f1
这是son2的f3    #当调用f3的时候,son1中没有f3函数;那么这个时候是继续沿着son1的父类中寻找还是去son2中寻找呢;看结果这个是先到son2中寻找f3函数(新式类中寻找父类的方法是从左到右,广度优先) 这是Parsenclass1的f4  #调用f4的时候先去son_son类中找,没有找到再去son1和son2中依次寻找,也没有找到最后去了Parsenclass1中寻找(
,
) #类.__bases__ 显示该类的父类

 

转载于:https://www.cnblogs.com/yan-peng/p/9957644.html

你可能感兴趣的文章
【Android游戏开发之六】在SurfaceView中添加组件!!!!并且相互交互数据!!!!...
查看>>
Windows 服务器系统的服务概述和网络端口要求
查看>>
SQLite操作
查看>>
安装Gogs及简单配置(使用默认数据库)
查看>>
Linux 常用命令
查看>>
奔向新纪元,Vista安装经历
查看>>
Centos7无法使用ssh登陆及解决方案
查看>>
应用强制访问控制管理网络服务
查看>>
RedisLive监控Redis服务
查看>>
Exchange 2013多租户托管PART 2:Exchange基本配置
查看>>
虚拟化系列-Citrix XenServer 6.1 虚拟机的管理
查看>>
如何使用联想O1来调试OPhone应用?
查看>>
Mellanox发布升级版RoCE软件 简化以太网RDMA部署
查看>>
一种基于机器学习的自动化鱼叉式网络钓鱼思路
查看>>
苹果发布iOS补丁修复Error 53
查看>>
《认知设计:提升学习体验的艺术》——学习者不希望觉得自己愚蠢
查看>>
大数据产业“跑”出“长春速度”
查看>>
今日头条的引擎是怎么样工作的?
查看>>
YII2.0框架分页
查看>>
大数据与量化投资
查看>>