zoukankan      html  css  js  c++  java
  • 类和对象小知识

    属性查找顺序

    • 属性查找顺序:先从对象自身查找,对象没有就去类中查找,类中没有则报错
    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)
    
    • 只是闭包外面套了个函数,而对象外面套了个类
  • 相关阅读:
    移动端适配
    javscript_DOM 拖动事件
    Nginx
    文件和二进制数据的操作
    数组方法
    JS异步开发
    网络协议
    八大排序
    硬链接与软链接的区别
    入门计算机一段时间的感想
  • 原文地址:https://www.cnblogs.com/lucky75/p/11047824.html
Copyright © 2011-2022 走看看