第一章: Python中一切皆對(duì)象

思維導(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)置類型

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 包(lib)、模塊(module) 在Python中,存在包和模塊兩個(gè)常見概念。 模塊:編寫Python代碼的py...
    清清子衿木子水心閱讀 3,922評(píng)論 0 27
  • 1.元類 1.1.1類也是對(duì)象 在大多數(shù)編程語言中,類就是一組用來描述如何生成一個(gè)對(duì)象的代碼段。在Python中這...
    TENG書閱讀 1,424評(píng)論 0 3
  • 指尖蝶舞的花園閱讀 192評(píng)論 0 2
  • 前些天在知乎上看到了一個(gè)宜家的廣告。我一直聽說宜家的床怎么怎么樣,但是具體的還真沒接觸過,于是我點(diǎn)進(jìn)去看了看里面的...
    積木格子閱讀 549評(píng)論 0 0
  • 我真的是第一次嘗試就做成功了,只要把材料買齊,按照步驟,就能做出美味的玉米發(fā)糕,接下來我把流程分享一下給大家。 準(zhǔn)...
    枝子小羊閱讀 1,168評(píng)論 6 25

友情鏈接更多精彩內(nèi)容