本节内容
1、产生对象
2、类中的数据属性
3、类中的函数属性
4、补充说明
一、产生对象
1、实现代码
x='global' class LuffyStudent: school='luffycity' 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 sleeping' %self.Name) stu1=LuffyStudent('王二丫','女',18) stu2=LuffyStudent('李三炮','男',38) stu3=LuffyStudent('张铁蛋','男',48) print(stu1.__dict__) print(stu2.__dict__) print(stu3.__dict__)
2、输出
{'Name': '王二丫', 'Sex': '女', 'Age': 18} {'Name': '李三炮', 'Sex': '男', 'Age': 38} {'Name': '张铁蛋', 'Sex': '男', 'Age': 48}
对象:特征与技能的结合体
类:类是一系列对象相似的特征与相似的技能的结合体
二、类中的数据属性
1、代码
print(LuffyStudent.school,id(LuffyStudent.school)) print(stu1.school,id(stu1.school)) print(stu2.school,id(stu2.school)) print(stu3.school,id(stu3.school))
2、输出
luffycity 12235696 luffycity 12235696 luffycity 12235696 luffycity 12235696
类中的数据属性:是所有对象共有的是所有对象共有的
三、类中的函数属性
1、类中的函数属性:是绑定给对象使用的
1、代码
print(LuffyStudent.learn) LuffyStudent.learn(stu1) LuffyStudent.learn(stu2) LuffyStudent.learn(stu3)
2、输出
<function LuffyStudent.learn at 0x0000000001151268> File "F:/s13/day07/5-属性查找.py", line 21, in <module> LuffyStudent.learn(stu1) TypeError: learn() missing 1 required positional argument: 'x'
2、绑定到不同的对象是不同的绑定方法
1、代码
print(stu1.learn) stu1.learn(1) #learn(stu1,1) print(stu2.learn) print(stu3.learn)
2、输出
<bound method LuffyStudent.learn of <__main__.LuffyStudent object at 0x00000000010E8A58>> 王二丫 is learning 1 <bound method LuffyStudent.learn of <__main__.LuffyStudent object at 0x00000000010E8A90>> <bound method LuffyStudent.learn of <__main__.LuffyStudent object at 0x00000000010E8AC8>>
3、对象调用绑定方式时,会把对象本身当作第一个传入,传给self
1、代码
stu2.learn(2) stu3.learn(3) stu1.x='from stu1' LuffyStudent.x='from Luffycity class' print(stu1.__dict__) print(stu1.x)
2、输出
李三炮 is learning 2 张铁蛋 is learning 3 {'x': 'from stu1', 'Age': 18, 'Sex': '女', 'Name': '王二丫'} from stu1
4、小结
1、是绑定给对象使用的,绑定到不同的对象是不同的绑定方法
2、是绑定给对象使用的,绑定到不同的对象是不同的绑定方法,
3、对象调用绑定方式时,会把对象本身当作第一个传入,传给self
四、补充说明
- 站的角度不同,定义出的类是截然不同的;
- 现实中的类并不完全等于程序中的类,比如现实中的公司类,在程序中有时需要拆分成部门类,业务类等;
- 有时为了编程需求,程序中也可能会定义现实中不存在的类,比如策略类,现实中并不存在,但是在程序中却是一个很常见的类。