1. 程式人生 > >day23:類的名稱空間和組合

day23:類的名稱空間和組合

1,類屬性:靜態屬性,方法:動態屬性;雙下init方法,每當我們呼叫類的時候就會自動的觸發這個方法,預設傳self,在init方法裡面可以對self賦值;在類的內部,self就是一個物件,我們自己例項化的物件是類外部的物件

2,Python入門,給你一個需求,能翻譯成Python語言,就入門了;面向物件入門,當你見到一個需求,能分析出這個問題是否適合用面向物件解決,如果適合,能有一些想法,怎麼設計這個類,有幾個屬性,方法等等

3,一定要選好最適合的程式設計方式,不是所有的都適合用面向物件來解決的,面向物件只是一種程式設計思想,並沒有高階低端之分。

4,是否可以用物件名來呼叫靜態屬性呢?可以的

5,類中的函式名和物件,最終都是一個名字而已,都是一個記憶體地址。定義了一個類以後,會建立一個這個類名的名稱空間,在這個空間內,放名字

6,有了物件一定可以找到類(類物件指標),有了類找不到物件,單線聯絡,物件自己的空間裡面沒有的時候,回去類的空間裡面找

class Course:

    language = 'Chinese'
    def __init__(self,teacher,course_name,period,price):
        self.teacher = teacher
        self.name = course_name
        self.period 
= period self.price = price def func(self): pass linux = Course('lisa','linux',6,20000) linux.language = "japanese" # 這個是給物件新添加了一個屬性

print(linux.__dict__)
del linux.language #刪除這個屬性 Course.language
= 'English' # 這個是修改了雷屬性 print(Course.__dict__) # {'teacher': 'lisa', 'name': 'linux', 'period': 6, 'price': 20000, 'language': 'japanese'}
# {'__module__': '__main__', 'lan

7,對於靜態屬性不可變資料型別來說,類變數最後用類名來操作,用物件來操作的話,只不過給物件添加了新的屬性;對於可變資料型別,可以用物件和類的索引來操作

8,繫結方法,這個物件提供的所有的資料,這個方法都可以去呼叫了,這種情況下,才產生了繫結方法。繫結的意思其實就是把這個物件當做self傳進去了,也有非繫結方法,目前我們還沒有見到。

def func():pass

class Foo():
    def func(self):
        print('func')

f1 = Foo()

# 列印記憶體地址
print(func)
print(Foo.func)
print(f1.func)
print(f1)

# <function func at 0x103bfa840>
# <function Foo.func at 0x103bfa6a8>
# <bound method Foo.func of <__main__.Foo object at 0x103b2f390>>
# <__main__.Foo object at 0x1044ac390>
# 這個函式是這個類的繫結方法

9,物件找名字的時候,如果類裡面沒有,是不可以找全域性的的,最高找到類。類裡面就是一個獨立的,他不能一級一級網上找了

10,import一個包,相當於類的例項化過程,後面的點呼叫,類似於物件訪問方法,訪問屬性。

11,類的特性:面向物件的三大特性:繼承,多型和封裝

12,一種類裡面的用法,組合,這個我們其實一直在用,只不過不知道他就叫做組合。