目录
属性查找顺序:先从对象自身查找,对象没有就去类中查找,类中没有则报错
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)
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)) #
lis.append(5) # 和下面代码等价,就是一个查找类中方法的过程
list.append(lis1, 5)
print(lis)
print(lis1)
[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)
只是闭包外面套了个函数,而对象外面套了个类
手机扫一扫
移动阅读更方便
你可能感兴趣的文章