類的調用
實例化
class Luffy: school = 'luffy' def __init__(self,name,age): self.Name = name self.Age = age def learn(self): print('%s is learning' % self.Name) def eat(self): print('is eating') stu1 = Luffy('xing',19)
__init__,初始化方法,可差異化不同對象,self為自己本身,實例化時把 自己傳遞進去了
stu1 = Luffy('xing',19) print(stu1.Name)
Luffy.__init__(stu1,'yang',22) print(stu1.Name) --------------------------------------- xing yang
甚至可以通過以上方法更改屬性
stu1 = Luffy('xing',19) stu1.learn() Luffy.learn(stu1) -------------------------------- xing is learning xing is learning
以上為調用類的方法的兩種方法
注意:
實例化對象有自己的特有屬性
stu1 = Luffy('Tom',19) stu2 = Luffy('Bob',22) print(stu1.__dict__) print(stu2.__dict__) --------------------------- {'Name': 'Tom', 'Age': 19} {'Name': 'Bob', 'Age': 22}
實例化對象的公共數據屬性都指向類中數據屬性的地址,而函數屬性則是自己的地址
stu1 = Luffy('Tom',19) stu2 = Luffy('Bob',22) print(id(stu1.school)) print(id(stu2.school)) print(id(Luffy.school)) print(id(stu1.learn)) print(id(stu2.learn)) print(id(Luffy.learn)) ------------------------------- 15527680 15527680 15527680 # 數據屬性地址一樣 12010160 12010160 16096184 # 函數屬性地址stu1和stu2一樣(可能是Python新版的優化)
Python3 中統一了類型與類的概念
l1 = [1,2,3] l2 = list([4,5,6]) print(type(l1),type(l2)) l1.append(4) list.append(l2,7) print(l1) print(l2) ------------------ <class 'list'> <class 'list'> [1, 2, 3, 4] [4, 5, 6, 7]