Python高级培训第二次作业

2023-11-13

import operator
class Cat(object):#创建类cat 继承与object
    def __init__(self,leg):#设置__init__就上一个参数leg
        self.leg = leg#设置leg的值为leg


    def run(self):#设置方法 获得奔跑方法
        print("cat have no way to run")#打印cat have no way to run


class Tiger(Cat):#创建类Tiger 继承与Cat
    def __init__(self,leg,name):#设置__init__有两个参数leg,name
        self.name=name#设置name的值为name
        Cat.__init__(self,leg)#重新使用下Cat的__init__()

    def run(self):#重写奔跑方法
        super(Tiger, self).run()#重写使用Cat的run()
        print("tiger konw how to run")#打印"tiger konw how to run"
        #print(self.leg)

    def __pow__(self, power, modulo=None):#重写pow方法 返还pow(self.leg,power)
        a=int(self.leg)
        #print(type(power))
        for i in range(power):
            a=a*power
        return a
    def __lt__(self, other):#重写__lt__ 比较大小
        if self.leg>other.leg:
            return True
        else:
            return False

#c1 = Cat(4)
c2=Tiger(leg=4,name="tiger")#实例化Tiger为变量c2 leg=4,name="tiger"
c2.run()#使用c2的run方法
print(pow(c2,4))#打印出pow(c2,4)
c3=Tiger(leg=5,name="tiger2")#实例化Tiger为变量c3 leg=5,name="tiger2"
print(operator.lt(c3, c2))#打印出lt(c3, c2) 的结果

property()

property(fget=None,fset=None,fdel1=None,doc=None)          property 封装

property(获得属性的方法,设置属性的方法,删除属性的方法)

class Myclass():

def __init__(self,attr = 10):

self.myattr = attr

def getoneattr(self):

return self.myattr

def setoneattr(self,attr):

self.myattr = attr

def deloneattr(self):

del self.attr

x=property(getoneattr,setoneattr,deloneattr)

c1 = Myclass()

c1.getoneattr()#--------------------------------<=10

c1.x#---------------------------------------------<=10

c1.x=20

c1.x#----------------------------------------------<=20

del c1.x

c1.myattr#------------------------------------------<=报错

 super()

super([子class],self).方法([,attr])#不能加self

Python中子类可以覆盖父类的方法

要想重新调用被覆盖的父类的方法可以用super()调用父类的方法

super()在改变子类的魔法函数时显得尤其的重要

后加:

def __init__(self):

super(base_class_name,self).__init__()

self.wuhu=1

可以既继承父类 又可以设计子类的__init__ 这里子类的self.wuhu被创建了

当然不用非要用__init__

例如

class Father():

    def __init__(self):

        print('父类')

        self.wuhu1=1

    def fun1(self,x=1):

        self.wuhu2=self.wuhu1+x

        print('wuhu2=',self.wuhu2)

        

class Child(Father):

    def __init__(self):

        print('子类')

        super(Child,self).__init__()

    def fun1(self):

        super(Child,self).fun1()

        self.wuhu3=self.wuhu2+self.wuhu1

c1=Child()

c1.fun1()

print(c1.wuhu3)

结果为:

子类

父类

wuhu2= 2

3

class Father():

def __init__(self):

print('父类被调用')

class Child(Father):

def __init__(self):
print('子类被调用')

super(Child,self).__init__()#------------------<=这里不能加self

c1 = Child()#----------------------------------------<=父类被调用

子类被调用

改写魔法方法:

例(add):

class Model:
    def __init__(self,x):
        self.x=x

    def __add__(self, other):
        return  Model(self.x+other.x)
    def __str__(self):
        return ("两个对象相加的值是{x}".format(x=self.x))

a=Model(5)
b=Model(7)
print(a+b)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python高级培训第二次作业 的相关文章

随机推荐

  • 基于线程池模型的讨论与完整代码演示

    线程池引入的必要性 在网络服务器中 包括大量的web服务器 它们都需要在单位时间内必须处理相当数目的接入请求以及数据处理 通常在传统多线程服务器中是这样实现的 一旦有个请求到达 就创建一个线程 由该线程执行任务 任务执行完毕后 线程就退出
  • 连接MySQL错误create connection SQLException, url jdbcmysqllocalhost3306

    具体报错如下 2018 11 12 16 14 21 704 ERROR 9752 eate 1537371824 com alibaba druid pool DruidDataSource create connection SQLEx
  • 鉴权认证的基本概念

    最近项目中用到 学习了一下 记录下来后续有时间再继续研究 单点登录 单点登录SSO Single Sign On 简单点就是在一个多系统共存的环境下 用户在一处登录后 就不用在其他系统中登录 也就是用户的一次登录能得到其他所有系统的信任 单
  • 这是一篇关于如何成为一名AI算法工程师的长文

    点击上方 Datawhale 选择 星标 公众号 第一时间获取价值内容 这是一篇关于如何成为一名AI算法工程师的长文 经常有朋友私信问 如何学python呀 如何敲代码呀 如何进入AI行业呀 正好回头看看自己这一年走过的路 进行一次经验总结
  • Arduino离线安装Esp8266

    首先安装ArduinoIDE 可以直接去github官网下载 链接 安装完成后 打开Arduino IDE 文件 gt 首选项 在 其他开发板管理器网址 输入框中 填入以下网址 https www arduino me package es
  • mysql下载与安装

    1 网址 http www mysql com 2 进入网址 选择DOWNLOADS 下载 3 选择社区版 4 进入之后选择如下都可以 5 下载64位的 点进来都是最新的版本 点击如下可选择下载之前的版本 6 安装
  • 模型的过拟合与欠拟合

    过拟合与欠拟合 定义 过拟合 High Viarance 欠拟合 High Bias 误差 Error 产生原因 解决方案 防止欠拟合 防止过拟合 正则化 L0范数 L1范数 L2范数 讨论 参考 定义 首先要确定的两个概念是Underfi
  • gtk主题指南

    一 gtk主题指南 1 Widgets 2 Styles 3 Engines 4 gtkrc文件 1 修改构件的属性 2 每一构件的分为五种状态 3 风格绑定 1 将一种风格绑定到组件类 2 组件嵌套的方式widget class 如wid
  • 尚硅谷-谷粒商城P44Vue模板

    配置模板
  • 11个代码质量审核和管理工具,程序员必备!

    点击上方 全栈开发者社区 右上角 设为星标 如今 代码质量分析和审核已成为每个企业的基本流程 随着开源代码库使用的增加 安全性和代码质量对于构建高质量软件至关重要 不良的代码不仅会影响代码的可维护性 而且还会在某些情况下影响其性能 此外 更
  • TensorRT基础

    目录 1 1 TensorRT构建和编译一个模型 1 2 Interference 1 3 动态shape 1 4 ONNX TensorRT的核心在于对模型算子的优化 合并算子 利用GPU特性选择特定核函数等多种策略 通过tensorRT
  • Spring boot2.x配置redis缓存以及利用通配符删除缓存key

    环境 jdk1 8 window系统 需要安装redis maven项目 一 依赖 redis跟缓存依赖是必须的
  • 226. 翻转二叉树

    Definition for a binary tree node function TreeNode val left right this val val undefined 0 val this left left undefined
  • link标签介绍

    定义 HTML外部资源链接元素 规定了当前文档与外部资源的关系 该元素最常用于链接样式表 此外也可以被用来创建站点图标 比如PC端的 favicon 图标和移动设备上用以显示在主屏幕的图标 link标签属性 属性 值 描述 as audio
  • 84、PullToRefresh使用详解

    PullToRefresh使用详解 一 构建下拉刷新的listView http blog csdn net harvic880925 article details 17680305 PullToRefresh使用详解 二 重写BaseA
  • ipsec.conf 各配置含义

    IPsec conf 是 IPsec 协议的配置文件 它包含了各种网络安全相关的配置信息 下面是常见的一些配置项及其含义 conn 连接名 表示需要建立的安全连接的名称 left 或者 leftsubnet 本地端 IP 地址或子网地址 r
  • 【java基础一】string和list互转

    工作中常用到list和string互转 常见的互转方法 list转string 方法1使用java8 Stream流 List
  • vue-router路由的三种传参方式(params/query)

    路由传参 传参方式可分为params传参和query传参 其中params又可分为url中显示参数和不显示参数 1 params传参 显示参数 声明式 router link 该方式通过router link的to属性实现 子路由需要提前配
  • 异步复位同步释放原理

    深度揭秘异步复位同步释放原理 文章右侧广告为官方硬广告 与吾爱IC社区无关 用户勿点 点击进去后出现任何损失与社区无关 明天就放端午小长假了 提前祝大家节日快乐 腾讯官网已经给小编公众号开通了赞赏功能 在文章末尾 这个赞赏是针对原创作者的
  • Python高级培训第二次作业

    import operator class Cat object 创建类cat 继承与object def init self leg 设置 init 就上一个参数leg self leg leg 设置leg的值为leg def run s