网站首页

人工智能P2P分享搜索全网发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

Python面向对象深化(下)

时间:2023-05-11 17:52

人气:

作者:admin

标签: 代码 

导读:__call__  方法和可调用对象 凡是可以将 () 直接应用到自身并执行, 都称为可调用对象. 注意: 可调用对象包括自定义的函数、Python 内置函数、以及本节所讲的实例对象. 定义了  __call__(...

__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")

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信