一、类方法

  • 二、静态方法
  • 三、__del__方法(析构函数)
  • 四、__call__方法
  • 五、重名方法
  • 六、方法的动态性

一、类方法

1.格式:

@classmethod

def 类方法名(cls[,参数列表])

方法体

2.注意:

@classmethod必须位于方法上面一行

第一个cls必须有,指类对象本身

调用:类名.类方法名(参数列表),不能给cls传值

类方法中访问实例属性和实例方法会出错

二、静态方法

1.格式:

@staticmethod

def 静态方法名(参数列表)

方法体

2.注意:

@staticmethod位于静态方法第一行

调用:类名.静态方法名

静态方法中调用实例属性和实例方法会出错

class Student():score=100@classmethod     #类方法def printScore(cls):print(cls.score)@staticmethod    #静态方法def add(a,b):print("{0}+{1}={2}".format(a,b,(a+b)))return(a+b)
Student.add(10,20)
Student.printScore()

三、__del__方法

1.用于实现对象销毁,释放对象占用的资源

class Person():def __del__(self):print("销毁对象:{0}".format(self))
p1=Person()
p2=Person()
del p2
print("程序结束")

销毁对象:<__main__.Person object at 0x0000029DC095FDF0>    #销毁p2
程序结束
销毁对象:<__main__.Person object at 0x0000029DC095FFD0>    #销毁p1

四、__call__方法

1.定义了__call__方法,称为可调用对象,可像函数一样被调用

class Salary():print("计算工资")def __call__(self, salary):yearsalary=salary*12monthsalary=salarydaysalary=salary/22.5hoursalary=daysalary/8return dict(yearsalary=yearsalary,monthsalary=monthsalary,daysalary=daysalary,hoursalary=hoursalary)
s=Salary()
print(s(4000))

计算工资
{'yearsalary': 48000, 'monthsalary': 4000, 'daysalary': 177.77777777777777, 'hoursalary': 22.22222222222222}

五、重名方法

1、其他语言中,可以定义多个重名方法,具有方法重载,而在Python中方法的参数没有类型区分,因此Python中没有方法重载,如果定义重名方法,只有最后一个有效。

class Person():def say(self):print("Hello!")def say(self,name,age):print("Hi,everyone!")
p1=Person()
p1.say("小明",18)
p1.say()    #不带参数,会报错

TypeError: say() missing 2 required positional arguments: 'name' and 'age'
Hi,everyone!

六、方法的动态性

1.利用方法、函数即对象,对类外的方法进行调用

class Person:def work(self):print("星期一到星期五上班")def play_game(a):print("{0}在周末玩游戏".format(a))
def work2(a):print("好好工作,努力挣钱")
p1=Person()
p1.work()
Person.play=play_game
p1.play()
Person.work=work2
p1.work()

星期一到星期五上班
<__main__.Person object at 0x0000026246763FD0>在周末玩游戏
好好工作,努力挣钱


【Python笔记11】相关推荐

  1. python笔记11面向对象

    python笔记11面向对象思想 先声明一下 各位大佬,这是我的笔记. 如有错误,恳请指正. 另外,感谢您的观看,谢谢啦! 面向对象 :将数据与函数绑定在一起,进行封装,减少重复代码的重写过程 面向过 ...

  2. Python笔记⑥11.07

    一.类和对象 ➢ 类 是对一群具有相同特征或者行为的事物的一个统称, ➢ 对象 是由类创建出来的一个具体 实例,可以直接使用 ➢ 类 只有一个,而 对象 可以有很多个 ➢ 不同的对象 之间 属性 可能 ...

  3. Python 网络爬虫笔记11 -- Scrapy 实战

    Python 网络爬虫笔记11 – Scrapy 实战 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Py ...

  4. Python学习笔记11:函数修饰符

    Python学习笔记11:函数修饰符 Python有很多有趣的特性,其中函数修饰符就是一个. 我们在之前的那个web应用示例中用过如下写法: @web.route('/log') @符号后边的,就是一 ...

  5. tkinter 笔记:列表部件 listbox (莫烦python 笔记)

    1  主体框架 主体框架部分还是 import tkinter as tkwindow = tk.Tk() #创建窗口window.title('my window') #窗口标题window.geo ...

  6. python输出字体的大小_Toby的Python笔记 | 预备知识:安装openpyxl学做电子表格

    Toby的Python笔记 | 预备知识:安装openpyxl学做电子表格 Python 需要创建和读取excel表里面的数据,需要用 openpyxl 这个包,今天安装好备用. 首先,进入C命令窗口 ...

  7. python笔记-1(import导入、time/datetime/random/os/sys模块)

    python笔记-6(import导入.time/datetime/random/os/sys模块) 一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其它内 ...

  8. Python笔记002-列表推导式

    Python笔记002-列表推导式 以下是我学习<流畅的Python>后的个人笔记,现在拿出来和大家共享,希望能帮到各位Python学习者. 首次发表于: 微信公众号:科技老丁哥,ID: ...

  9. Python笔记(4) 关键字

    Python笔记(4) 关键字 1. 关键字 2. True与False 3. None 4. and,or与not 5. assert 6. await与async 7. for/while,con ...

最新文章

  1. sql advantage 执行sql_Sql 的执行顺序是怎样的?
  2. scrapy带参数的命令
  3. python字符串去头尾_悉尼大学某蒟蒻的Python学习笔记
  4. Gmail邮箱添加域名解析
  5. 三段诡异的JavaScript代码,结果出乎意料
  6. java退出登录_java实现注销登录
  7. JS数据结构第六篇 --- 二叉树力扣练习题
  8. java中的流思想_Java8新特性 Stream流式思想(二)
  9. screentogif能录制声音吗_学会了吗?使用GoldWave录制电脑中的声音
  10. 冰点还原精灵授权问题解答
  11. 【网页设计大作业】:端午主题(HTML+CSS+JavaScript)——中国传统文化(6页)
  12. 安排座位 java_座位安排(seat)
  13. 读OpenCV自带的标定例程“calibration.cpp”感想
  14. 看雪CTF.TSRC 2018 团队赛 第二题 半加器 writeup
  15. mysql-DTL语言
  16. Java 根据贷款年限对应的不同利率计算月供
  17. 有哪些免费的CRM软件可以使用?
  18. 北京公积金贷款不够用 提升额度或有利刚需购房
  19. 如何查看app的报错日志?(模拟器和真机)
  20. 主机和虚拟机实现复制粘贴功能

热门文章

  1. vue实现tabs侧边导航栏点击内容跳转到对应位置,且内容滚动导航栏切换,封装直接用
  2. Excel 2010 SQL应用029 查询区间条件
  3. 分享:详记一次MySQL千万级大表优化过程!
  4. python之dir函数
  5. macx下简单有效的挂载ntfs硬盘进行读写的方法
  6. matlab——修改图中字体
  7. siege压力测试软件,压力测试工具siege
  8. SLAM让你如何去理解这个世界
  9. springboot嵌入式数据库derby初探
  10. arp老化时间是什么_为什么您的软件会老化?