在類中定義的名字,都是類的屬性,類有兩種屬性:資料屬性和函式屬性,通過__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 三國 西...