类与对象

一 类与对象

对象:属性和方法的结合体

类:一系列共同的属性和方法(类就是一系列对象相似的特征与技能的结合体)

现实生活中:先有对象再有类

程序中:先有类再有对象

二 现实世界中定义类和对象

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__中
​ -绑定方法:
​ -定义在类内部
​ -对象来调用,会自动把对象传过来,在方法内部就可以修改该对象

上一篇:冒泡排序--简单(c语言)


下一篇:结构体(Struct)/共用体(union)