class Person(): #創建一個類
def __init__(self,name): #定義初始化信息。
self.name = name
li = Person('李') #實例化Person('李'),給變量li
li.age = 20 #再程序沒有停止下,將實例屬性age傳入。動態語言的特點。
Person.age = None #這里使用類名來創建一個屬性age給類,默認值是None。Python支持的動態屬性添加。
def eat(self): #定義一個方法,不過這個方法再類之外。
print('%s正在吃東西。。'%self.name)
import types #動態添加方法需要使用tpyes模塊。
li.eat = types.MethodType(eat,li) #使用types.MethodType,將函數名和實例對象傳入,進行方法綁定。並且將結果返回給li.eat變量。實則是使用一個和li.eat方法一樣的變量名用來調用。
li.eat() #調用外部方法eat()方法。
@staticmethod #定義靜態方法。
def test(): #定義靜態方法,靜態方法可以不用self參數。
print('這是一個靜態方法。')
Person.test = test #使用類名.方法名 = test的形式來方便記憶和使用,Person.test其實只是一個變量名,沒有特殊的含義。
Person.test() #調用test方法。
@classmethod #類方法
def test(cls):
print('這是一個類方法。')
Person.test = test #定義一個類屬性等於方法名。
Person.test() #調用方法。
class test(object): #定義一個類。
__slots__ = ('name','age')
#使用slots來將屬性固定,不能進行動態添加修改