当前位置: 首页 > news >正文

大良网站建设价格北京网站建设公司优势

大良网站建设价格,北京网站建设公司优势,网页布局代码及效果图,wordpress 移动版继承静态与多态一. 析构方法二. 继承,调用与重写2.1 单继承2.2 多继承2.3 继承传递和重写父类2.4 调用父类方法三. 多态四. 类属性和实例属性五. 类方法和静态方法前言这是我听老师讲课做的笔记 作者:神的孩子都在跳舞 关注我的csdn博客,更多python知识还…

继承静态与多态

    • 一. 析构方法
    • 二. 继承,调用与重写
        • 2.1 单继承
        • 2.2 多继承
        • 2.3 继承传递和重写父类
        • 2.4 调用父类方法
    • 三. 多态
    • 四. 类属性和实例属性
    • 五. 类方法和静态方法

前言

这是我听老师讲课做的笔记

作者:神的孩子都在跳舞

关注我的csdn博客,更多python知识还在更新

一. 析构方法

  1. 介绍:当一个对象被删除或者被销毁时,python解释器也会默认调用一个方法,这个方法为__del__()方法,也称为析构方法

  2. 代码解析:


class Animal(object):def __init__(self,name):#定义__init__方法self.name=name#实例属性print('init方法被调用')def __del__(self):print('程序执行结束,自动调用del方法销毁对象%s'%self.name)
dog=Animal('狗')
# 或者直接删除对象也可以自动调用del方法
del doginput('程序等待中')#这是一个输入函数,说明程序还没结束,可是del方法被执行了'''输出
init方法被调用
程序执行结束,自动调用del方法销毁对象狗
程序等待中
'''

总结:

1、当整个程序脚本执行完毕后会自动调用__del__方法

2、当对像被手动销毁时也会自动调用 方法

3、析构函数一般用于资源回收,利用__del__方法销毁对象回收内存等资源

二. 继承,调用与重写

2.1 单继承

在现实生活中,继承一般指的是继承父辈的财产。在面向对象中继承也是同样道理,不过子继承了父的所有类

比如:猫和狗都是动物(动物有吃,喝的方法),他们有相同属性,我们一个个定义太麻烦

代码解析:


class Father(object):# 父类print('全部财产')def interest(self):print('都是儿子的')pass
class Sun(Father):# 子类passSun();#子类继承了父类
a=Sun();
a.interest();#子类继承了父类的方法
'''输出
全部财产
都是儿子的
'''

2.2 多继承

子类可以继承一个父类,那是否可以继承两个父类或多个呢?答案是肯定的,这就是python的多继承

代码解析:


# 一对多,多对一的关系class Father1(object):def a(self):print('第一个父亲')passdef Repeat(self):print('这是第一个父亲的同名方法')
class Father2(object):def b(self):print('第二个父亲')passdef Repeat(self):print('这是第二个父亲的同名方法')
class sun(Father1,Father2):#一个儿子继承两个父亲pass
c=sun();#创建对象
c.a();# 调用父类方法
c.b();# 如果同名调用哪个c.Repeat();#输出结果是调用了第一个父亲的# 我们可以通过__mro__函数查看解析顺序
print(sun.__mro__)
#(<class '__main__.sun'>, <class '__main__.Father1'>, <class '__main__.Father2'>, <class 'object'>)
'''输出
第一个父亲
第二个父亲
这是第一个父亲的同名方法
(<class '__main__.sun'>, <class '__main__.Father1'>, <class '__main__.Father2'>, <class 'object'>)
'''

2.3 继承传递和重写父类

# 继承传递就是爷爷给爸爸,爸爸给儿子class GrandFather(object):def eat(self):print('吃饭')# 继承  GrandFather 类
class Father(GrandFather):def fight(self):print('爸爸是用脚打儿子')pass# 继承 Father类
class Son(Father):def fight(self):print('儿子不给爸爸打')pass
lg = Son()
lg.eat()#调用了爷爷吃的方法# 重写父类方法
ll=Father();#创建父类对象
ll.fight();
lg.fight();#从写了父类figh方法
'''输出
吃饭
爸爸是用脚打儿子
儿子不给爸爸打
'''

2.4 调用父类方法

如果在子类中有一个方法需要父类的功能,并且又要添加新的功能。如果直接重写父类方法,那么就要重复写很多代码。那么这就要调用父类方法


class Father(object):def __init__(self,name):self.name=namepass
class sun(Father):def __init__(self,name):#重新构建父类方法#第一种super(sun, self).__init__(name)# 第二种方法#super().__init__(name)# 第三种方法#Father.__init__(self,name)# 添加新的功能self.name+='你好'print(self.name)
a=sun('dog')

三. 多态

所谓多态定义时的类型和运行时的类型不一样,此时就成为多态。后面统一调用

# 案例演示
class Animal:'''父类【基类】'''def say_who(self):print('我是一个动物....')passpass
class Duck(Animal):'''鸭子类 【子类】 派生类'''def say_who(self):'''在这里重写父类的方法:return:'''print('我是一只漂亮的鸭子')passpass
class People:def say_who(self):print('我是人类')passclass student(People):def say_who(self):print('我是一年级的学习 张明')pass
#定义一个调用方法
def commonInvoke(obj):'''统一调用的方法:param obj: 对象的实例:return:'''obj.say_who()pass
listA=[Duck(),student()]#定义一个列表存放子类
for item in listA:#遍历列表,循环调用函数,输出say_who()commonInvoke(item)
'''输出
我是一只漂亮的鸭子
我是一年级的学习 张明
'''

四. 类属性和实例属性

  1. 类属性 :就是类对象所拥有的属性,是可以被类对象实例对象共同访问使用的
  2. 实例属性:只能由实例对象所访问
# 属性:类属性和实例属性class Test(object):Ch='python'#类属性def __init__(self,name):self.name=name#实例属性pass
test=Test('love')#创建实例对象
print(test.Ch)#可以访问类属性
print(Test.Ch)#可以访问
#print(Test.name)#类对象不可以访问实例属性
print(test.name)#实例对象可以访问实例属性
#test.Ch='刘德华'  #通过实例对象 对类属性进行修改 可以吗? 不可以的,
#print(Test.Ch)类属性没有更改#可是通过类对象对实例对象进行修改就可以,这相当于一个等级,先类才能到方法'''输出
python
python
love
'''

五. 类方法和静态方法

  1. 类方法:类对象所拥有的方法,需要用装饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数,类方法可以通过类对象,实例对象调用
  2. 对比

(1)类方法的第一个参数是类对象cls,通过cls引用的类对象的属性和方法

(2)实例方法的第一个参数是实例对象self,通过self引用的可能是类属性、也有可能是实例属性(这个需要具体分析),不过在存在相同名称的类属性和实例属性的情况下,实例属性优先级更高。

(3)静态方法不需要额外定义参数,因此在静态方法中引用类属性的话,必须通过类对象来引用。

class  People:country='china'#类方法 用 classmethod 来进行修饰@classmethoddef get_country(cls):return cls.country #访问类属性pass@classmethoddef change_country(cls,data):cls.country=data #修改类属性的值  在类方法中pass@staticmethoddef getData():return People.country  #通过类对象去引用pass@staticmethoddef add(x,y):return x+ypassprint(People.add(10,56)) #带有参数的静态方法# print(People.getData())# print(People.get_country()) #通过类对象去引用
p=People()
print(p.getData()) #注意 一般情况下 我们不会通过实例对象去访问静态方法
# print('实例对象访问 %s'%p.get_country())
# print('-----------------修改之后---------------------------')
# People.change_country('英国')
# print(People.get_country()) #通过类对象去引用
  1. 为什么要使用静态方法呢

由于静态方法主要来存放逻辑性的代码,本身和类以及实例对象没有交互,也就是说,在静态方法中,不会涉及到类中方法和属性的操作数据资源能够得到有效的充分利用

# demo  返回当前的系统时间
import  time # 引入第三方的时间模块
class TimeTest:def __init__(self,hour,min,second):self.hour=hourself.min = minself.second = second@staticmethoddef showTime():return time.strftime("%H:%M:%S",time.localtime())passpassprint(TimeTest.showTime())
t=TimeTest(2,10,15)
print(t.showTime()) #没有必要通过这种方式去访问 静态方法

本人博客:https://blog.csdn.net/weixin_46654114
本人b站求关注:https://space.bilibili.com/391105864
转载说明:跟我说明,务必注明来源,附带本人博客连接。

请给我点个赞鼓励我吧
在这里插入图片描述

http://www.lbrq.cn/news/2641249.html

相关文章:

  • 提供佛山顺德网站建设网站外链工具
  • 范例网站怎么做泉州关键词优化排名
  • 屏山移动网站建设百度推广课程
  • 网站首页效果图怎么设计《新闻联播》今天
  • 网站开发及app开发报价seo独立站优化
  • 制作一个静态网页优化软件刷排名seo
  • 网站建设和网络推广是干嘛seo高级优化技巧
  • 工信部网站报备搜狗输入法下载安装
  • 销售网站平台搭建营销方式
  • 郑州网站建设大华伟业网站接广告
  • 厦门公司网站建设数字营销策略有哪些
  • 网站建设维护费合同深圳优化服务
  • 自己建立公司网站 怎样做全网营销系统是干什么的
  • 查建设工程规划许可证在哪个网站东莞网站建设优化技术
  • 个人网站搭建步骤关键词自动生成器
  • 海口做网站郑州seo网站排名
  • 丹东seo排名公司无锡网站建设方案优化
  • 做301重定向会影响网站权重吗设计外包网站
  • 云梦网络 网站模板搜索引擎推广方案
  • 郑州微信公众号网站建设关键词优化举例
  • 设计网站怎么做的淄博头条新闻今天
  • 美国做按摩广告的网站上海搜索引擎优化1
  • 在线建设网站搜索网站关键词
  • 网站图片一般多大尺寸外贸软件排行榜
  • 阅读分享网站模板怎样免费建立自己的网站
  • 信阳做网站汉狮网络石家庄做网站推广排名的公司
  • 合肥网站建设设计枸橼酸西地那非片是什么
  • 淘宝联盟网站建设源码谷歌seo推广
  • 做网站收费 优帮云合肥网站建设优化
  • 网站建设进度公司搭建网站
  • 深入解析K-means聚类:从原理到调优实战
  • C语言编译流程讲解
  • 高校合作 | 世冠科技联合普华、北邮项目入选教育部第二批工程案例
  • MCU-基于TC397的双BootLoader设计方案
  • 【运维进阶】NFS 服务器
  • Redis 分布式Session