03 類屬性和例項屬性

2022-07-07 07:18:13 字數 2151 閱讀 2034

在類中定義的名字,都是類的屬性,類有兩種屬性:資料屬性和函式屬性,通過__dict__訪問屬性的值

class dog(object):

tooth = 10

wangcai = dog()

xiaohei = dog()

print(dog.tooth) # 10

print(wangcai.tooth) # 10

print(xiaohei.tooth) # 10

類屬性的優點

類屬性只能通過類物件修改,不能通過例項物件修改,如果通過例項物件修改類屬性,表示的是建立了乙個例項屬性。

class dog(object):

tooth = 10

wangcai = dog()

xiaohei = dog()

# 1.3 修改類屬性

# 類屬性只能通過類物件修改,不能通過例項物件修改,如果通過例項物件修改類屬性,表示的是建立了乙個例項屬性。

dog.course = 'python' # 新增,等同於obj1.__dict__['course']='python'

dog.tooth = 12 # 修改,等同於obj1.__dict__['age'] = 12

print(dog.tooth) # 12

print(wangcai.tooth) # 12

print(xiaohei.tooth) # 12

print(dog.course)

del dog.course # 刪除,等同於del dog.__dict__['course']

# 不能通過物件修改屬性,如果這樣操作,實則是建立了乙個例項屬性

wangcai.tooth = 20

print(dog.tooth) # 12

print(wangcai.tooth) # 20

print(xiaohei.tooth) # 12

class dog(object):

def __init__(self):

self.age = 5

def info_print(self):

print(self.age)

wangcai1 = dog(18)

xiaohei1 = dog(99)

# 例項屬性

print(wangcai1.age)

# print(dog.age) # 報錯:例項屬性不能通過類訪問

wangcai1.info_print() # 5

# 2.1 類中定義的函式是類的函式屬性,類可以使用,但必須遵循函式的引數規則,有幾個引數需要傳幾個引數

dog.info_print(wangcai1)

dog.info_print(xiaohei1)

# 2.2 類中定義的函式主要是給物件使用的,而且是繫結給物件的,雖然所有物件指向的都是相同的功能,但是繫結到不同的物件就是不同的繫結方法,記憶體位址各不相同

print(id(dog.info_print)) # 2118372007224

print(id(wangcai1.info_print)) # 2118368383176

print(id(xiaohei1.info_print)) # 2118368383176

# 2.3繫結到物件的方法特殊之處在於,繫結給誰就因該有誰來呼叫,誰來呼叫,就會將」誰「本身當作第乙個引數自動傳入(方法__init__也是一樣)

wangcai1.info_print() # dog.info_print(wangcai1)

xiaohei1.info_print() # dog.info_print(xiaohei1)

# 型別list就是乙個類

print(type(list)) # # 例項化得到3個物件l1,l2,l3

l1=list([1,2,3])

l2=list(['a','b','c'])

l3=list(['x','y'])

print(l1) # [1, 2, 3, 4]

print(l2) # ['a', 'b', 'c']

print(l3) # ['x', 'y']

例項屬性和類屬性

例項屬性和類屬性 由於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 三國 西...