文章目录
一、一切皆对象
- python中的函数和类也是对象
# 判断函数和类是不是一个对象
# 方法一:
def func(name='jr'):
print(name) # juran
if__name__ == '__main__':
my_func = func
my_func('juran')
# isintance判断一个参数是否是某个类型
# 判断my_func是否是一个对象
print(isintance(my_func,object)) # True
# 方法二:
def func(name='jr'):
print(name)
class Func(object):
def __init__(self,name='jr1'):
print(name)
# 一个方法没有返回值,直接打印就是Nome
if __name__ == '__main__':
my_func = func
li = []
li.append(my_func)
li.append(Func)
print(li) # [<function func at 0x00000171AC7960D0>, <class '__main__.Func'>] 方法和类
for i in li:
print(i())
# jr
None
jr1 #实例化的类
<__main__.Func object at 0x0000019F9F483910> # __init__实例化后生成的
二、魔法函数
2.1 __getitem__方法
# 方法1:
class Company(object):
def __init__(self, employee_list):
self.employee = employee_list
company = Company(["tom", "bob", "jane"])
for i in company.employee:
print(i)
# tom bob jane
# 方法2:
class Company(object):
def __init__(self, employee_list):
self.employee = employee_list
# __getitem__可以帮助类进行循环
def __getitem__(self, item):
print(item)
return self.employee[item]
company = Company(["tom", "bob", "jane"])
for i in company:
print(i)
#0 tom 1 bob 2 jane 3
方法1中类进行循环需要加入属性employee,方法2中加入了__getitem__魔法方法可以帮助类直接进行循环,不用加入属性。
2.2 str__和__repr
# str
class Jr(object):
def __init__(self,name,age):
self.name = name
self.age = age
# __str__可以把类变成字符串进行输出
def __str__(self):
return "name:%s,age:%s" %(self.name,self.age)
jr = Jr('juran',18)
print(jr) # name:juran,age:18
# repr
class Jr(object):
def __init__(self,name,age):
self.name = name
self.age = age
# __repr__可以把类变成字符串进行输出
def __repr__(self):
return "name:%s,age:%s" %(self,name,age)
jr = Jr('juran',18)
print(ji