美文网首页
day24-类和对象

day24-类和对象

作者: 天行_b6d0 | 来源:发表于2020-08-06 18:40 被阅读0次

类即类别、种类,是面向对象设计最重要的概念,对象是特征与技能的结合体,而类则是一系列对象相似的特征与技能的结合体

1、在现实世界中:先有对象,再有类

世界上肯定是先出现各种各样的实际存在的物体,然后随着人类文明的发展,人类站在不同的角度总结出了不同的种类,如人类、动物类、植物类等概念。
也就是说,对象是具体的存在,而类仅仅只是一个概念,并不真实存在

2、在程序中:务必保证先定义类,后产生对象

这与函数的使用是类似的,先定义函数,后调用函数,类也是一样的,在程序中需要先定义类,后调用类。
不一样的是,调用函数会执行函数体代码返回的是函数体执行的结果,而调用类会产生对象,返回的是对象。

3、在程序中,务必保证:先定义(类),后使用(产生对象)

PS:

  1. 在程序中特征用变量标识,技能用函数标识
  2. 因而类中最常见的无非是:变量和函数的定义
#程序中的类
class OldboyStudent:
    school='oldboy'
    def learn(self):
        print('is learning')
        
    def eat(self):
        print('is eating')
    
    def sleep(self):
        print('is sleeping')

4、使用类的注意点

  • 类中可以有任意python代码,这些代码在类定义阶段便会执行
  • 因而会产生新的名称空间,用来存放类的变量名与函数名,可以通过OldboyStudent._dict_查看
  • 对于经典类来说我们可以通过该字典操作类名称空间的名字(新式类有限制),但python为我们提供专门的.语法
  • 点是访问属性的语法,类中定义的名字,都是类的属性

5、程序中类的用法
.:专门用来访问属性,本质操作的就是_dict_

OldboyStudent.school #等于经典类的操作OldboyStudent.__dict__['school']
OldboyStudent.school='Oldboy'   # 等于经典类的操作OldboyStudent.__dict__['school']='Oldboy'
OldboyStudent.x=1   # 等于经典类的操作OldboyStudent.__dict__['x']=1
del OldboyStudent.x   # 等于经典类的操作OldboyStudent.__dict__.pop('x')

6、程序中的对象
调用类,或称为实例化,得到对象

s1=OldboyStudent()
s2=OldboyStudent()
s3=OldboyStudent()

如此,s1、s2、s3都一样了,而这三者除了相似的属性之外还各种不同的属性,这就用到了_init_
注意:该方法是在对象产生之后才会执行,只用来为对象进行初始化操作,可以有任意代码,但一定不能有返回值

class OldboyStudent:
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex

s1=OldboyStudent('川建国','男',18)   # 先调用类产生空对象s1,然后调用OldboyStudent.\__init__(s1,'李保国','男',18)
s2=OldboyStudent('王八一','女',38)
s3=OldboyStudent('牛哄哄','男',78)

7、程序中对象的用法

#执行__init__,s1.name='牛哄哄',很明显也会产生对象的名称空间
s2.__dict__
{'name': '王八一', 'age': '女', 'sex': 38}

s2.name #s2.__dict__['name']
s2.name='罗三炮' #s2.__dict__['name']='罗三炮'
s2.course='python' #s2.__dict__['course']='python'
del s2.course #s2.__dict__.pop('course')
在程序中:先定义类,后产生对象

8、调用类发生的几个步骤

  • 创建一个空对象与类相关
class Student:
     def __init__(obj, x, y, z):
            obj.name = x
            obj.age = y
            obj.gender = z
  • 把空对象、"yan", 18, "male"一起传给_init_方法,完成对象的初始化
  • 赋值符号把初始化好的对象的内存地址绑定变量名stu_obj1
stu_obj1 = Student("yan", 18, "male")

9、属性查找

优先级:先从对象的字典里找,没有,再去类的字典中找

class Student:
    school = "oldboy"

    def __init__(obj, x, y, z):
        obj.name = x
        obj.age = y
        obj.gender = z

    def choose(self):
        print("%s 正在选课" %self.name)

stu_obj1 = Student("冯疯子", 18, "female")
stu_obj2 = Student("郭靖", 19, "male")
stu_obj3 = Student("大雕", 200, "male")

1、类中定义的数据是直接共享给所有对象使用的

print(id(stu_obj1.school))
print(id(stu_obj2.school))
print(id(stu_obj3.school))
print(id(Student.school))
Student.school="xxx"
print(stu_obj1.school)
print(stu_obj2.school)
print(stu_obj3.school)
print(Student.choose)
print(stu_obj1.choose)
print(stu_obj2.choose)
print(stu_obj3.choose)

2、类中定义的函数是绑定给所有对象用的,绑定给谁就应该由哪个对象来调用
对象.绑定方法()会把对象当作第一个参数传入
类.函数()就是一个函数的玩法,没有自动传参的效果

相关文章

  • day24-类和对象

    类即类别、种类,是面向对象设计最重要的概念,对象是特征与技能的结合体,而类则是一系列对象相似的特征与技能的结合体 ...

  • 对象、类对象和元类对象

    http://www.tuicool.com/articles/mmyuUr http://blog.csdn.n...

  • python 类和对象

    类和对象 目标 类和对象的概念 类和对象的关系 类的设计 01. 类和对象的概念 类 和 对象 是 面向对象编程的...

  • 类,类对象和实例对象

    Python 的类定义写完之后就成了一个类对象,而引用这个类对象的就是实例对象。 类中定义的属性和方法都是静态属性...

  • 面相对象-02类和对象

    类和对象 目标 ●类和对象的概念●类和对象的关系●类的设计 01.类和对象的概念 类和对象是面向对象编程的两个核心...

  • python语法入门五

    类和对象 类和对象 基础 继承:python为多继承 类、类对象和实例对象 当实例对象声明后,再删除类对象,那么该...

  • 13.Python类和对象

    目标 类和对象的概念 类和对象的关系 类的设计 01. 类和对象的概念 类 和 对象 是 面向对象编程的 两个 核...

  • 12.Python类和对象

    目标 类和对象的概念 类和对象的关系 类的设计 01. 类和对象的概念 类 和 对象 是 面向对象编程的 两个 核...

  • 类和对象 ​​​

  • 类和对象

    对象=属性+方法 self 由同一个类可以生成无数对象,当一个对象的方法被调用是,对象会将自身的引用作为第一个参数...

网友评论

      本文标题:day24-类和对象

      本文链接:https://www.haomeiwen.com/subject/qymwrktx.html