0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python面向对象深化(下)

麦辣鸡腿堡 来源:python都知道 作者:了不起 2023-05-11 17:52 次阅读

__call__方法和可调用对象

凡是可以将 () 直接应用到自身并执行, 都称为可调用对象.

注意:

  1. 可调用对象包括自定义的函数、Python 内置函数、以及本节所讲的实例对象.
  2. 定义了__call__()的对象, 称为“可调用对象”, 即该对象可以像函数一样被调用.
  3. 该方法使得实例对象可以像调用普通函数那样, 以“对象名()”的形式使用

实操代码

deff1():

print("f1")

f1()#本质上也是调用了__call__()方法

classCar:

def__call__(self,age,money):

print("调用__call__()方法")

print("车龄:{0},金额:{1}".format(age,money))

f2=Car()

f2(3,289000)#像函数那样调用,本质上也是调用了__call__()

@property 装饰器

@property装饰器相当于在Java中实现了对属性的get 方法

注意:

  1. @property可以将一个方法的调用方式变成“属性调用”.
  2. @property主要用于帮助我们处理属性的读操作、写操作
  3. 对于某一个属性, 我们可以直接通过:emp1.salary = 30000如上的操作读操作、写操作 但是这种做法不安全. 比如, 我需要限制薪水必须为 1-10000 的数字. 这时候我们就需要通过使用装饰器@property来处理.

实操代码

classEmployee:

def__init__(self,name,salary):

self.name=name

self.__salary=salary

@property#相当于salary属性的getter方法

defsalary(self):

print("月薪为{0}, 年薪为{1}".format(self.__salary,12*self.__salary))

returnself.__salary

@salary.setter

defsalary(self,salary):#相当于salary属性的setter方法

if0< salary < 1000000:

self.__salary=salary

else:

print("薪水录入错误!只能在0-1000000之间")

emp1=Employee("时间静止",8848.48)

print(emp1.salary)

emp1.salary=12580

print(emp1.salary)

关于None和判断的总结

None是什么

  • 与C和JAVA不同, python中是没有 NULL 的, 取而代之的是 None . None 是一个特殊的常量, 表示变量没有指向任何对象.
  • 在Python中, None 本身实际上也是对象, 有自己的类型 NoneType .
  • 你可以将 None 赋值给任何变量, 但我们不能创建 NoneType 类型的对象

实操代码

obj=None

obj2=None

print(type(None))

print(id(None))

print(id(obj))

print(id(obj2))

"""输出结果

'nonetype'>

140706372487160

140706372487160

140706372487160

"""

None和其他类型的比较

  • None不是False, None不是0, None不是空字符串. None和任何其他的数据类型比较永远返回False
  • if语句判断时,空列表[]、空字典{}、空元组()、0等一系列代表空和无的对象会被转换成False
  • == 和 is 判断时, 空列表、空字符串不会自动转成 False

实操代码

#None不是False,None不是0,None不是空字符串.None和任何其他的数据类型比较永远返回False.

a=None

ifaisNoneanda==None:

print("a是None")#会执行

ifa==Falseora==0:

print("None不等于False")#不会被打印

a=[]

b=()

c={}

d=""

e=0

f=None

#if语句判断时,空列表[]、空字典{}、空元组()、0等一系列代表空和无的对象会被转换成False

if(nota)and(notb)and(notc)and(notd)and(note)and(notf):

print("if判断时,空列表[]、空字符串、0、None等代表空和无的对象会被转换成False")

#==和is判断时,空列表、空字符串不会自动转成False

ifa==Falseord==False:

print("==时, 空列表、空字符串不是False!")#不会执行

if(e==False):

print("==时,0会转成False")

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4708

    浏览量

    68176
  • python
    +关注

    关注

    54

    文章

    4763

    浏览量

    84339
收藏 人收藏

    评论

    相关推荐

    Python面向对象编程详解

    一般编程可分为面向过程编程,和面向对象编程。Python面向对象编程,与Java的
    发表于 09-04 16:35 496次阅读
    <b class='flag-5'>Python</b>的<b class='flag-5'>面向</b><b class='flag-5'>对象</b>编程详解

    labview面向对象编程

    点击学习>>《龙哥手把手教你学LabVIEW视觉设计》视频教程使用LabVIEW面向对象编程方法,对于大型测试应用程序来讲,面向对象相对于面向
    发表于 11-24 11:01

    3分钟看懂Python面向对象

    Python虽然是解释型语言,但从设计之初就已经是一门面向对象的语言,对于Python来说一切皆为对象。正因为如此,在
    发表于 06-08 14:20

    LabVIEW面向对象的ActorFramework(2)

    二、为什么要学习面向编程?面向对象编程,如果将上文推荐的两本书读完后,基本上也就有了答案。从从自我产品开发的经验中,理解为可以迅速解决中大型程序需求变化时,在不影响其他程序功能的情况
    发表于 02-18 09:20

    面向对象编程及其三大特性 精选资料分享

    编程语言分为面向过程编程、函数式编程和面向对象编程。其实python就是一种面向对象编程,那么我
    发表于 07-21 08:38

    谈谈面向对象编程

    在工业自动化领域,梯形图逻辑仍然是最常用的编程语言之一,但对于更加复杂的控制对象面向对象编程不失为一种高效率的方式。下面先来谈谈面向对象
    发表于 09-08 07:47

    面向对象编程总结

    如何从面向过程到面向对象OOP?面向对象是什么?有何特点?
    发表于 09-29 08:19

    面向对象编程介绍

    目录一、面向对象编程介绍1.面向过程编程2.函数式编程3.面向对象编程二.面向
    发表于 12-13 07:22

    网络讲坛:面向对象的编程()-labview视频教程

    网络讲坛:面向对象的编程()-labview视频教程
    发表于 03-26 16:42 231次下载

    这可能是Python面向对象编程的最佳实践

    本节介绍了attrs和cattrs两个库,让实现Python面向对象编程不再难。
    的头像 发表于 06-22 12:07 2646次阅读

    利用Python和PyTorch处理面向对象的数据集

    本篇是利用 Python 和 PyTorch 处理面向对象的数据集系列博客的第 2 篇。 如需阅读第 1 篇:原始数据和数据集,请参阅此处。 我们在第 1 部分中已定义 MyDataset 类,现在
    的头像 发表于 08-25 15:30 2938次阅读

    利用 Python 和 PyTorch 处理面向对象的数据集(2)) :创建数据集对象

    本篇是利用 Python 和 PyTorch 处理面向对象的数据集系列博客的第 2 篇。我们在第 1 部分中已定义 MyDataset 类,现在,让我们来例化 MyDataset 对象
    的头像 发表于 08-02 17:35 877次阅读
    利用 <b class='flag-5'>Python</b> 和 PyTorch 处理<b class='flag-5'>面向</b><b class='flag-5'>对象</b>的数据集(2)) :创建数据集<b class='flag-5'>对象</b>

    面向过程与面向对象的区别

    说起面向对象,大家可能会想到其他的,但是此对象非彼对象哈哈,不必惊慌,也特别好搞定。 在听到面向
    的头像 发表于 02-15 11:10 4019次阅读
    <b class='flag-5'>面向</b>过程与<b class='flag-5'>面向</b><b class='flag-5'>对象</b>的区别

    Python中的类和对象详解

    Python 是一种面向对象的编程语言,它支持类和对象。类是一种用户自定义的数据类型,用于定义对象的属性和方法。
    的头像 发表于 04-20 16:53 1033次阅读

    Python面向对象深化(上)

    前言 哈喽, 大家好, 我是了不起! 欢迎大家来观看了不起的冒险之旅. 为了方便起见, 文中以小知为名. 讲述了不起在Python异世界的冒险之旅. 天空之城是座高耸云端的城堡. 位于西海岸附近
    的头像 发表于 05-11 17:51 562次阅读
    <b class='flag-5'>Python</b><b class='flag-5'>面向</b><b class='flag-5'>对象</b><b class='flag-5'>深化</b>(上)