1.靜態屬性
2.動態屬性
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 Course.language = 'English'#Course.__dict__['language'] = 'Chinese'print(Course.language) python = Course('egon','python','6 months',20000) linux = Course('egon','python','6 months',20000) ['chinese'] python.language = ''print(python.language) print(linux.language) python.language = 'Chinese'print(python.language) print(linux.language) del python.language print(python.language) print(python.__dict__) print(Course.language) print(linux.language) print(linux.__dict__)執行結果:
English
English
Chinese
English
English
{'teacher': 'egon', 'name': 'python', 'period': '6 months', 'price': 20000}
English
English
{'teacher': 'egon', 'name': 'python', 'period': '6 months', 'price': 20000}
類中的靜態變量 可以被對象和類調用
對於不可變數據類型來說,類變量最好用類名操作
對於可變數據類型來說,對象名的修改是共享的,重新賦值是獨立的
#模擬人生class Person: money = 0 def work(self): Person.money += 1000 mother = Person() father = Person() Person.money += 1000Person.money += 1000print(Person.money) mother.work() father.work()
2000
#創建一個類,每實例化一個對象就計數#最終所有的對象共享這個數據 class Foo: count = 0 def __init__(self): Foo.count += 1 f1 = Foo() f2 = Foo() print(f1.count) print(f2.count) f3 = Foo() print(f1.count)執行結果:
2
2
3
#認識綁定方法def func(): passprint(func) class Foo: def func(self): print('func') def func1(self): pass f1 = Foo() print(Foo.func) print(f1.func) print(f1.func1) #<bound method Foo.func of f1>執行結果:
<function func at 0x00F007C8>
<function Foo.func at 0x0339B858>
<bound method Foo.func of <__main__.Foo object at 0x03371810>>
<bound method Foo.func1 of <__main__.Foo object at 0x03371810>>
#包--__init__import package import time time.time() #類裡的名子有 類變量(靜態屬性) + 方法名(動態屬性)#對象裡的名子 對象屬性#對象 -- > 類#對象找名子 : 先找自己的找 >> 找類裡面的 >>在找不到就報錯#對象修改靜態屬性的值 #對於不可變數具類型來說,對象名的修改是共享的,重新腹值是獨立的
沒有留言:
張貼留言