时间:2023-05-11 17:52
人气:
作者:admin
__call__方法和可调用对象凡是可以将 () 直接应用到自身并执行, 都称为可调用对象.
注意:
__call__()的对象, 称为“可调用对象”, 即该对象可以像函数一样被调用.实操代码
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装饰器相当于在Java中实现了对属性的get 方法
注意:
@property可以将一个方法的调用方式变成“属性调用”.@property主要用于帮助我们处理属性的读操作、写操作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)
实操代码
obj=None
obj2=None
print(type(None))
print(id(None))
print(id(obj))
print(id(obj2))
"""输出结果
'nonetype'>
140706372487160
140706372487160
140706372487160
"""
实操代码
#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")
上一篇:Python面向对象深化(上)
下一篇:excel导出功能如何实现?