思維導(dǎo)圖

1. Python面向?qū)ο蟾訌氐?就是因?yàn)閜ython里面一切都是對(duì)象,就連模塊都是對(duì)象
函數(shù)和類也是對(duì)象,屬于python的一等公民.那么該怎么解釋這個(gè)一等公民呢?滿足如下四個(gè)條件:
1>可以賦值給一個(gè)變量
2>可以當(dāng)作參數(shù)傳遞給一函數(shù)
3>可以作為一個(gè)函數(shù)的返回值
4>可以作為元素添加到容器中
# encoding:utf-8
__author__ = 'Fioman'
__time__ = '2019/3/14 8:54'
"""
在Python中一切都是對(duì)象,函數(shù)和類也是對(duì)象,它們是python的一等公民.
1>可以賦值給一個(gè)變量
2>可以作為參數(shù)傳遞給一個(gè)函數(shù)
3>可以作為一個(gè)函數(shù)的返回值
4>可以添加到一個(gè)容器中
"""
def ask(name='Fioman'):
print(name)
class Person(object):
def __init__(self):
print('Class')
obj_list = []
obj_list.append(ask)
obj_list.append(Person)
for item in obj_list:
print(item())
# 打印結(jié)果Fioman None Class <__main__.Person object at 0x000001ABED8C34E0>
# 分析. 調(diào)用ask的時(shí)候,因?yàn)閍sk沒有返回值,所以item()的結(jié)果是None.而因?yàn)閕tem()相當(dāng)于是
# 調(diào)用Person(),相當(dāng)于是創(chuàng)建一個(gè)實(shí)例對(duì)象,返回值是一個(gè)Person的實(shí)例.
# 作為參數(shù)傳遞給一個(gè)函數(shù)
def print_type(item):
print(type(item))
print('****函數(shù)作為參數(shù)*****')
for item in obj_list:
print_type(item)
# 打印結(jié)果
# <class 'function'>
# <class 'type'>
print('函數(shù)作為返回值------------->')
def create_person(P,ask):
Person2 = P
my_ask = ask
return Person2,my_ask
print(create_person(Person,ask)[0](),create_person(Person,ask)[1]())
# 打印結(jié)果Class 和 Fioman 相當(dāng)于是調(diào)用Person() 和 ask(). 注意返回的是一個(gè)元組
print('*' * 10)
my_func = ask # 函數(shù)可以賦值給一個(gè)變量
my_func()
print('*' * 10)
my_class = Person
my_class() # 類也可以賦值給一個(gè)變量來調(diào)用
2.type,object,class之間的關(guān)系

注意幾點(diǎn)
1.type是python的一切的源頭,python中所有的對(duì)象都是由type創(chuàng)建.
2.而之所以可以做到一切皆對(duì)象,是因?yàn)閠ype本身也是它自己的對(duì)象.也就是說type(type) 的返回值還是'type'
3.Python中所有的類,如果沒有顯示的指定父類,都默認(rèn)繼承自object類.
4.object類是最頂層的類,但是它也是由type創(chuàng)建,并且type(object)的時(shí)候也是type,但是object的父類是()空
5.python中一切都是對(duì)象,所以比較靈活,因?yàn)榭梢栽诔绦蜻\(yùn)行的過程中更改對(duì)象的屬性
# encoding:utf-8
__author__ = 'Fioman'
__time__ = '2019/3/14 9:23'
'''
type 和 object 以及class之間的關(guān)系
'''
class Student():
pass
def f():
pass
a = 1
s = 'abc'
lst = [1,2,3]
d = dict(x=1)
stu = Student()
print(type(a),type(s),type(lst))
# <class 'int'> <class 'str'> <class 'list'>
print(type(stu),type(Student))
# <class '__main__.Student'> <class 'type'>
# 所以stu實(shí)例對(duì)象是由Student類生成的,而類對(duì)象Student是由type生成的.
# 總結(jié)type -> int -> 1
# 總結(jié)type -> class -> obj
# 什么是object,object是最頂層基類,所有類如果沒有顯示的寫明繼承的父類
# 就會(huì)默認(rèn)繼承自object
print(Student.__bases__) # (<class 'object'>,)
print(type.__bases__) # (<class 'object'>,)
print(object.__bases__) # ()
print(type(object)) # <class 'type'>
print(type(type)) # <class 'type'>
3.Python創(chuàng)建的內(nèi)置類型
