【Python笔记11】
一、类方法
- 二、静态方法
- 三、__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】相关推荐
- python笔记11面向对象
python笔记11面向对象思想 先声明一下 各位大佬,这是我的笔记. 如有错误,恳请指正. 另外,感谢您的观看,谢谢啦! 面向对象 :将数据与函数绑定在一起,进行封装,减少重复代码的重写过程 面向过 ...
- Python笔记⑥11.07
一.类和对象 ➢ 类 是对一群具有相同特征或者行为的事物的一个统称, ➢ 对象 是由类创建出来的一个具体 实例,可以直接使用 ➢ 类 只有一个,而 对象 可以有很多个 ➢ 不同的对象 之间 属性 可能 ...
- Python 网络爬虫笔记11 -- Scrapy 实战
Python 网络爬虫笔记11 – Scrapy 实战 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Py ...
- Python学习笔记11:函数修饰符
Python学习笔记11:函数修饰符 Python有很多有趣的特性,其中函数修饰符就是一个. 我们在之前的那个web应用示例中用过如下写法: @web.route('/log') @符号后边的,就是一 ...
- tkinter 笔记:列表部件 listbox (莫烦python 笔记)
1 主体框架 主体框架部分还是 import tkinter as tkwindow = tk.Tk() #创建窗口window.title('my window') #窗口标题window.geo ...
- python输出字体的大小_Toby的Python笔记 | 预备知识:安装openpyxl学做电子表格
Toby的Python笔记 | 预备知识:安装openpyxl学做电子表格 Python 需要创建和读取excel表里面的数据,需要用 openpyxl 这个包,今天安装好备用. 首先,进入C命令窗口 ...
- python笔记-1(import导入、time/datetime/random/os/sys模块)
python笔记-6(import导入.time/datetime/random/os/sys模块) 一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其它内 ...
- Python笔记002-列表推导式
Python笔记002-列表推导式 以下是我学习<流畅的Python>后的个人笔记,现在拿出来和大家共享,希望能帮到各位Python学习者. 首次发表于: 微信公众号:科技老丁哥,ID: ...
- Python笔记(4) 关键字
Python笔记(4) 关键字 1. 关键字 2. True与False 3. None 4. and,or与not 5. assert 6. await与async 7. for/while,con ...
最新文章
- sql advantage 执行sql_Sql 的执行顺序是怎样的?
- scrapy带参数的命令
- python字符串去头尾_悉尼大学某蒟蒻的Python学习笔记
- Gmail邮箱添加域名解析
- 三段诡异的JavaScript代码,结果出乎意料
- java退出登录_java实现注销登录
- JS数据结构第六篇 --- 二叉树力扣练习题
- java中的流思想_Java8新特性 Stream流式思想(二)
- screentogif能录制声音吗_学会了吗?使用GoldWave录制电脑中的声音
- 冰点还原精灵授权问题解答
- 【网页设计大作业】:端午主题(HTML+CSS+JavaScript)——中国传统文化(6页)
- 安排座位 java_座位安排(seat)
- 读OpenCV自带的标定例程“calibration.cpp”感想
- 看雪CTF.TSRC 2018 团队赛 第二题 半加器 writeup
- mysql-DTL语言
- Java 根据贷款年限对应的不同利率计算月供
- 有哪些免费的CRM软件可以使用?
- 北京公积金贷款不够用 提升额度或有利刚需购房
- 如何查看app的报错日志?(模拟器和真机)
- 主机和虚拟机实现复制粘贴功能