day34-3 类和对象小知识

该博客围绕Python展开,介绍了属性查找顺序,即先从对象自身找,无则去类中找,类中没有则报错;阐述了类与对象的绑定方法,针对类和对象,方法参数含义不同;还提及Python中一切皆对象,以及对象高度整合,类似闭包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

属性查找顺序

  • 属性查找顺序:先从对象自身查找,对象没有就去类中查找,类中没有则报错
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)
  • 只是闭包外面套了个函数,而对象外面套了个类

转载于:https://www.cnblogs.com/lucky75/p/11047823.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值