1. 程式人生 > >面向物件,類和物件訪問

面向物件,類和物件訪問

類和物件

1,物件的命名規範

按照大駝峰體書寫,每個單詞的開頭大寫:

class Person:
pass

2,在類中描述物件的特徵(屬性)

class Person:
name = '張三'#用變數來描述屬性
sex = 'man'
age = 10

取一個物件(通過呼叫一個類,也稱之為例項化或常建立物件):

obj = Person()
print(obj)
#輸出的內容是一個記憶體地址 : <__main__.Person object at 0x000001FC35FB12E8>

解釋記憶體地址:模組名為main,包含一個Person類,通過Person類產生了物件,

地址為0x000001FC35FB12E8

使用物件的特徵取值:

obj.name
obj.sex
obj.age
#輸出結果為 張三,man,10

 

3,物件的定義和呼叫

定義類和類中的物件:

class Student:
number = 007
  name = '蓋倫'
  sex = 'man'
  age = 18

stu1 = Student()#相當於呼叫類,會返回一個記憶體地址,因為沒有具體的物件
stu2 = Student()

print(stu1)
print(stu2)
<__main__.Student object at 0x000002567C4B19E8>
<__main__.Student object at 0x000002567C2D9EF0>

每個物件的記憶體地址都是不同的,這是因為在建立物件時,計算機會申請一個記憶體空間,並將物件中的內容

存進去,類也是一樣的,但是id是相同的,這是因為呼叫的是同一個宣告

print(stu1.name)
print(stu2.name)
#返回的值一樣
print(id(stu1.name))
print(id(stu2.name))
#id也是一樣的,因為這是同一份資料

 

為物件單獨指定屬性:
stu1.name = '趙信'
stu2.name = '鍾無豔'

print (stu1.name)
print (stu2.name)

#最新定義的的屬性優先查詢,這涉及到物件的查詢

每個物件的name屬性都不同,則意味著需要給每個物件單獨指定name
存放物件屬性的位置:
  1. 一個是物件,因為某些物件的具體屬性不一樣,要存放到物件中

  2. 另一個是類,因為某些物件的某個屬性全部一樣,直接存放到類中,不需要重新定義

示例:

class Student:

  school = "Tsinghua LOL"#一個學校的學生,學校屬性是一樣的
   
  number = '007'
  name = '蓋倫'
  sex = 'man'
  age = 18

 
獲取一個物件中的內容:

通過dict內建函式,可以獲取一個物件中包含的內容

print(stu1.__dict__)       #物件中的內容
print(Student.__dict__)     #類中的內容

 

4,物件的訪問順序

當物件和類中有值時,優先訪問物件中的:

class Car:
  c_type = 'Tesla'
  color = 'res'
  price = 500000

c1 = Car()
c2 = Car()

print(c1.__dict__)
print(c1.c_type)
輸出內容 : {} , Tesla

 

當物件中需要查詢的內容不存在時,則到類中去訪問:
c1.c_type = '911'
print(c1.c_type)#c1是自定義的
print(c2.c_type)#c2是類中定義的
輸出內容 :911 , Tesla

 

訪問順序為 物件-->> 類

  • 在建立一個類的時候,會產生相應的名稱空間,儲存類中名稱和值繫結的關係

  • 物件也一樣

類還有另一個作用,就是 作為物件的模板,所有屬於同一個類的物件,都具備類的公共內容