属性查找顺序

  • 属性查找顺序:先从对象自身查找,对象没有就去类中查找,类中没有则报错
class Student:
    name = 'xxx'

    def __init__(self, name):
        self.name = name

stu1 = Student('张三')
print(stu1.name)
张三

类与对象的绑定方法

class Student:
    school = 'a中'

    def __init__(self, num, name, age):
        self.num = num
        self.name = name
        self.age = age

    def eat(self):
        print(self.school)
        print(self.name)
        self.num += 1
        print(f'{self.num} is eat')
        print(id(self))

stu1 = Student(1, '张三', 19)
# Student.eat(111)          # 在这里self=111,所以会报错,以为111没有school用法
stu1.eat()
print(id(stu1))
a中
张三
2 is eat
2874406763320       # 说明self和stu1是同一个东西
2874406763320
  • 针对类而言:eat里的self就是正常传入的参数
  • 针对对象而言:eat里的self就是对象本身

类与数据类型

  • Python中一切皆对象
lis = [1, 2, 3]     # 和下面代码等价,就是一个实例化对象的过程,只是简写了
lis1 = list([1, 2, 3])
print(type(lis))        # <class 'list'>  类型就是一个名为list的类

lis.append(5)       # 和下面代码等价,就是一个查找类中方法的过程
list.append(lis1, 5)

print(lis)
print(lis1)
<class 'list'>
[1, 2, 3, 5]
[1, 2, 3, 5]

对象的高度整合

  • 在类中封装了一大堆属性,然后又封装了一大堆方法(专门用来控制这些属性),并且在这基础之上,对于不同的对象,这些属性和方法又不相同。
  • 个人理解有点类似于闭包
class Student:
    def __init__(self, num, name, age):
        self.num = num
        self.name = name
        self.age = age

    def eat(self):
        print(self.name, '开始吃饭了')

    def sleep(self):
        print(self.name, '开始睡觉了')

zhangsan = Student(1, '张三', 19)
lisi = Student(2, '李四', 20)

zhangsan.eat()
lisi.eat()
  • 闭包函数
import requests
def outter(url)
    def sqider():
        response = requests.get(url)
        response.encoding = 'gb2312'
        data = response.text
        return data
    return sqider

xiaohuar = outter('http://www.xiaohuar.com')
print(xiaohuar)
print(xiaohuar)
  • 只是闭包外面套了个函数,而对象外面套了个类

day34-3 类和对象小知识的更多相关文章

  1. JAVA 类和对象基础知识详解

    /*文章中用到的代码只是一部分,需要源码的可通过邮箱联系我 1978702969@qq.com*/ 和C++一样,JAVA也是一门面向对象的语言,其基础和核心是类和对象.而面向对象的思想是来源与显示生 ...

  2. Spark记录-Scala类与对象小例子

    //基类-Person class Person(val na: String, val ag: Int) { //属性 var name: String = na var age: Int = ag ...

  3. Java编程里的类和对象

    像我们搞计算机这块的,都知道这么一件事,当前的计算机编程语言主要分为两大块,一为面向过程,二为面向对象.Java就是一门纯面向对象的语言.学习了一个月左右的Java,在下对于Java当中的类和对象有了 ...

  4. 如何讲清楚 Java 面向对象的问题与知识?(类与对象,封装,继承,多态,接口,内部类...)

    写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...

  5. php有关类和对象的相关知识1

    有关类和对象的相关知识 类的自动加载 类的自动加载是指,在外面的页面中,并不需要去“引入”(包含)类文件,但是程序会在需要一个类的时候就自动去“动态加载”该类. 什么叫做“需要一个类”?通常是这样的情 ...

  6. 在VC6.0下运行C语言程序,以及编程入门必备的常识类小知识!

    今天给大家分享在VC6.0环境下编写C语言程序的基本步骤,为初学者打开学习C语言的第一道门.具体步骤如下(如果需要软件资源,可以留言): 1)新建工作区 依次点击 文件--新建--工作区 或是Ctrl ...

  7. C++基础知识(5)---类和对象

    终于把C++中的基础在前面的几篇博客中总结完了,可能还有一些语法还没有总结到,没关系,以后用到了再查资料就好.类是C++中的一个非常重要的概念,这是区别你使用的C++到底是面向过程还是面向对象的一个重 ...

  8. Python_day8_面向对象(多态、成员修饰符、类中特殊方法、对象边缘知识)、异常处理之篇

    一.面向对象之多态 1.多态:简而言子就是多种形态或多种类型 python中不支持多态也用不到多态,多态的概念是应用与java/C#中指定传参的数据类型, java多态传参:必须是传参数的数据类型或传 ...

  9. java类与对象的动手动脑和其他小问题

    在Java中,我们可以通过组合一私有字段和一对get/set方法来定义一个属性.私有的变量,共有的方法. package sample; /** * 自定义Java类的示例 */ class MyCl ...

随机推荐

  1. N天学习一个linux命令之vmstat

    用途 查看系统资源整体使用情况,包括进程数量,CPU,内存,IO,swap等资源统计信息 用法 vmstat [options] [delay [ count]] 常用选项 -a 显示active/i ...

  2. iOS 代码方式设置按钮标题、图片的偏移

    button.imageEdgeInsets = UIEdgeInsetsMake(0,1 , 2, 3); button.titleEdgeInsets = UIEdgeInsetsMake(0,1 ...

  3. poj 1068 Parencodings(模拟)

    转载请注明出处:viewmode=contents">http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://poj ...

  4. 学习笔记——SQL SERVER2014内存数据库

    sql server2014支持内存数据库功能. 内存可以说是数据库性能的生命线.理论上,如果内存足够,SQL SERVER可以将所有的数据都装载到内存里,访问.修改什么的,都在内存中进行,只有在ch ...

  5. 学习笔记——WCF

    学了一下WCF,发现怎么跟Web Service这么像! 这个WCF究竟干嘛的? 一查,原来: "Windows Communication Foundation (WCF) 是由微软发展的 ...

  6. luogu2024 食物链

    题目大意 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B吃 C,C 吃 A.现有 N 个动物,以 1 - N 编号.每个动物都是 A,B,C 中的一种,但是我们并 ...

  7. 【辨异】—— 可见 vs. 不可见

    1. 常见对比 物理可见,逻辑不可见: 效果可见: 对于一个文档,字符.图形可见,行.列.页呀等结构化的元素,不可见,它们各是一种逻辑组织与安排: 观念(思维方式,看待事情的方式)是不可见的,但行为是 ...

  8. CMMI的SG/GG概念区别与SP/GP概念的区别

    每一个 “流程区域” 会细分为多个子目标.若该子目标只对应单一的流程区域,称为 “特定目标(Specific goal)”:若子目标会涵跨多个流程区域,则称为 “一般目标(Generic goal)” ...

  9. 0423-mysql插入语句大全

    /*注意: 1.字段和值要一一对应 2.值的数据类型是字段的数据类型 3.当输入的字段是表中全部字段时,字段可以省略不写: insert into login values ('zhangsan',‘ ...

  10. [Apple开发者帐户帮助]一、开始(1)关于您的开发者帐户

    Apple开发人员网站提供了为Apple平台制作出色应用所需的工具和信息.如果您不熟悉Apple平台上的开发,可以免费使用.只需接受Apple开发者协议,即可为您创建一个帐户.使用此帐户下载测试版软件 ...