一 类与对象
对象:属性和方法的结合体
类:一系列共同的属性和方法(类就是一系列对象相似的特征与技能的结合体)
现实生活中:先有对象再有类
程序中:先有类再有对象
二 现实世界中定义类和对象
2.1 定义对象
-
对象1:
特征:
学校:xxx
姓名:猪哥 年龄:18
性别:male
技能:
选课
-
对象2:
特征:
学校:xxx
姓名:如花
年龄:19
性别:female
技能:
选课
2.2定义类
-
学生类:
相似的特征:
学校='xxx'
相似的技能:
选课
三 程序中定义类和对象
定义类(类名建议用驼峰命名)
class 关键字 类名:
class Student:
#变量表示属性
school='xxx'
def choose(self):
print('选课...')
def student(self):
print('学习...')
#生成对象 类加括号,生成对象
stu1=Student()
#获取属性和方法 通过.获取
print(stu1.school)#xxx
print(stu1.choose) #<bound method Student.choose of <__main__.Student object at 0x000002443C347C88>>
#查看类中的属性和函数
print(Student.__dict__)#{'__module__': '__main__', 'school': 'xxx', 'choose': <function Student.choose at 0x000001A6F0383378>, 'student': <function Student.student at 0x000001A6F0383400>, '__dict__': <attribute '__dict__' of 'Student' objects>, '__weakref__': <attribute '__weakref__' of 'Student' objects>, '__doc__': None}
print(Student.__dict__['school'])#xxx
print(Student.__dict__['choose'])#<function Student.choose at 0x000001A6F0383378>
Student.__dict__['choose'](1)#选课...
Student.choose(1)#选课...xxx
print(Student.school)#xxx
#获取对象的属性和方法
print(stu1.__dict__) #{}
print(stu1.school) #xxx
#对象来调用方法,第一个参数不用传
print(stu1.choose) #<bound method Student.choose of <__main__.Student object at 0x00000138EE08DF98>>
stu2=Student()
print(stu2.school)#xxx
#对象自己的属性和方法
stu1.name='nick sb'
stu1.school='xxxx'
print(stu1.school)#xxxx
print(stu1.__dict__)#{'name': 'nick sb', 'school': 'xxxx'}
属性查找顺序
先从对象自身找----->类中找----->报错
Student.school="xxxx"
stu1=Student()
print(stu1.school)
向对象中放属性
# 第一种方式:
stu1=Student()
stu1.name='nick sb'
# 第二种方式:通过__init__方法
class Student:
#变量表示属性
school='xxx'
#__init__ 看好名字,不是__int__
def __init__(self,name):
self.name=name
def choose(self):
print("选课....")
def study(self):
print('学习...')
产生对象
# stu1=Student()
stu1=Student('nick')
#内部帮我们做了一些事:当我在实例化产生对象的时候,会自动调用__init__方法,完成对象的初始化
print(stu1.name)
stu2=Student('jason')
print(stu2.name)
def change(obj,name):
obj.name=name
stu1=Student('xxx')
Student.__init__(stu1,'nick')
change(stu1,'nick')
print(stu1.name)
stu2=Student('李铁蛋')
print(stu2.name)
总结
类与对象
-定义类
class关键字 类名:
pass
-产生对象
对象=类名()
-类:
1 获取类的属性和方法
类.__dict__
2 类来调用属性和方法
1 通过dict来取(复杂,不用)
2 类名.属性/函数
-对象:
1 对象获取属性和方法
对象.__dict__
2 对象来调用属性和方法
对象.属性/方法
产生对象(绑定方法,属性的查找顺序)
-属性查找顺序
-先从对象自身找------>类中找----->报错
-对象赋属性
-方式一:
stu1=Student()
stu1.name='nick sb'
-方式二(通过__init__):
-在类中定义该方法,方法上写一些参数
-在对象实例化产生对象时,在括号中传的值,会被传到__init__中
-绑定方法:
-定义在类内部
-对象来调用,会自动把对象传过来,在方法内部就可以修改该对象