""" 在现实世界中: 对象1:王二丫 特征: 学校='luffycity' 名字=王二丫 性别=女 年龄=18 技能: 吃饭 学习 对象2:张铁蛋 特征: 学校='luffycity' 名字=李三胖 性别=男 年龄=38 技能: 吃饭 学习 对象3: 特征:张铁蛋 学校='luffycity' 名字=张铁蛋 性别=男 年龄=48 技能: 吃饭 学习 """ class LuffyCity: school = 'student' def __init__(self, name, sex, age): self.Name = name self.Sex = sex self.Age = age def learn(self,x): print('%s is learning %s' % (self.Name, x)) def eat(self): print('%s is eatting' % self.Name) stu1 = LuffyCity('李二丫', '女', 18) stu2 = LuffyCity('李三胖', '男', 38) stu3 = LuffyCity('张铁蛋', '男', 48)
对象是特指与技能的结合体
类是 一系类对象的相似的特征与相似的技能的结合体
print(LuffyCity) print(stu1.__dict__)
类中的数据属性:对象所特有的;id相同 显示是共享的
print(LuffyCity.school, id(LuffyCity.school)) print(stu1.school, id(stu1.school)) print(stu2.school, id(stu2.school)) print(stu3.school, id(stu3.school))
类中的函数属性:是绑定给对象使用。绑定不同对象是不同的绑定方法。对象调用绑定方法,会把对象本身当做第一个传入,传给self。
print(LuffyCity.learn) # ---> <function LuffyCity.learn at 0x102df4378> # print(LuffyCity.learn(stu1)) # ---> 李二丫 is learning # print(LuffyCity.learn(stu2)) # print(LuffyCity.learn(stu3)) # print(stu1.learn) # ----> 绑定函数<bound method LuffyCity.learn of <__main__.LuffyCity object at 0x102dfe1d0>> # print(stu1.learn(1)) # --->李二丫 is learning 1 # print(stu2.learn(2)) # print(stu3.learn(3)) LuffyCity.x = 'from luffycity class' #增加一个变量x print(stu1.__dict__) # 查看stu1 并无x print(stu1.x) # --->from luffycity class