例項屬性和類屬性的理解

2022-08-19 18:00:19 字數 1636 閱讀 2349

# class fun():

# a = 1 # 類屬性

# def l(self):

# a = 4

# print('a')

# b = fun()

# print(fun.a)

# class test(object):

# name = 'scolia'

## a = test()

# test.name = 'scolia good' # 通過類進行修改類屬性,成功!連例項屬性都改了

# print(test.name)

# print(a.name)

# class test(object):

# name = 'scolia'

## a = test()

# a.name = 'scolia good' # 通過例項進行修改,不成功,只是相當於重新建立了例項屬性,沒有修改類屬性

# print(test.name)

# print(a.name)

# 這裡的情況是我在例項中訪問乙個屬性,但是我例項中沒有,我就試圖去建立我的類中尋找有沒有這個屬性。

# 找到了,就有,沒找到,就丟擲異常。(這裡說明了例項物件能夠訪問類的屬性!反之,類物件不能訪問例項屬性!)

# 而當我試圖用例項去修改乙個在類中不可變的屬性的時候,我實際上並沒有修改,而是在我的例項中建立了這個屬性。

# 而當我再次訪問這個屬性的時候,我例項中有,就不用去類中尋找了。

# class test(object):

# name = 'scolia'

## a = test()

# a.abc = 123

# print(dir(test)) # abc 自動在例項屬性中建立了

# print(dir(a))

# 已經證實了例項屬性能夠被類物件修改,試著通過例項修改類屬性

# class test:

# list1 =

## a = test()

# print(test.list1)

# print(a.list1)

# 也可以任性地為某個例項新增方法,python 支援動態新增屬性

# class test:

# pass

## def fangfa():

# print('我是某個例項的方法')

## a = test()

# b = test()

# a.abc = fangfa # 特意新增乙個方法

# a.abc()

# b.abc() # b 沒有這個方法

# 還能為類動態新增方法

class test:

pass

def fangfa(self): # self 代表是例項方法,只能由例項呼叫

print('我是方法')

test.abc = fangfa

a = test()

a.abc()

b = test() # 已經修改(新增)了類的方法

b.abc()

例項屬性和類屬性

例項屬性和類屬性 由於python是動態語言,根據類建立的例項可以任意繫結屬性。給例項繫結屬性的方法是通過例項變數,或者通過self變數 class student object def init self,name self.name name s student bob s.score 90但是...

類屬性和例項屬性

類屬性就是類物件所擁有的屬性,它被所有類物件的例項物件所共有,在記憶體中只存在乙個副本,這個和c 中類的靜態成員變數有點類似。對於公有的類屬性,在類外可以通過類物件和例項物件訪問 class people object name tom 公有的類屬性 age 12 私有的類屬性 p people p...

類屬性和例項屬性

1.不可修改型別 物件屬性只要賦值,那麼此物件用的屬性就是自己的屬性,不會再用同名的類屬性,類屬性的變化不會再影響到此物件。2.可修改型別 a.修改內部屬性的值,只要修改不是賦值,那麼修改會影響到所有物件以及類屬性。b.如果是重新賦值操作,效果等同於不可修改型別。class a books 三國 西...