需求:
小明今年18岁,身高1.80,每天早上会 跑步,完了 吃 东西,
小美今年17岁,身高1.65,小美早上不 跑步,喜欢 吃 东西
1.定义类:类名怎么定义?
使用class来定义一个类
class类名:类名一般遵从大驼峰命名法(即每个单词首字母大写)
(1)class 类名:
(2)class 类名(object):
class Student(object): #关注这个类有那些属性和行为
__slots__() #这个属性直接定义在类里,是一个元组,用来规定对象可以存在的属性
def __init__(self,name,age,height): #此处的name只是参数,可用其他字母代替
#在__init__里,以参数的形式定义特征,称之为属性
self.name = name #self.name 后的name才是类的属性,下同
self.age = age
self.height = height
#行为定义为一个个函数
def run(self):
print("正在跑步")
def eat(self):
print("正在吃东西")
#使用Student类创建了两个实例对象 s1,s2
#(理解:对象就是内存里的一块空间)
#s1 和 s2 都会有name,age,height属性,也有run,eat这些行为
s1 = student("小明",18,180) # Student()会自动调用__init__ 方法
s2 = Student("小美",17,165)
#根据需求让不同的对象执行同的行为
s1.run()
s1.eat()
s2.eat()
2.self的理解(谁调用的self就指谁)
class Student(object): #关注这个类有那些属性和行为
def __init__(self,x,y):
# x,y 是参数
# name ,age 是属性
self.name = x
self.age = y
def say_hello(self):
print("大家好,我是",self.name)
s1 = Student("张三,18") #这个代码具体做了些什么
#1.调用__new__方法,用来申请内存空间
#2.调用 __init__方法传入参数,将self指向创建还好的内存空间,填充数据
#3.变量s1也指向创建好的空间
s1.say_hello()
#没有属性会报错
#print(s1.height)
#直接用等号给一个属性赋值,
#如果该属性以前不存在,会给对象添加一个新属性
#动态属性
s1.city = "西安" #给对象添加了一个city属性
print(s1.city)
#如果这个属性以前存在,会修该属性对应的值
s1.name = "李四"
print(s1.name)
过程理解如图1所示
3.__slots__
属性的使用
class Student(object):
#这个属性直接定义在类里,是一个元组,用来规定对象可以存在的属性
__slots__=("name","age")
def __init__(self,x,y):
self.name = x
self.age = y
def say_hello(self):
print("大家好,我是",self.name)
s1 = student("小明",18,180)
致谢:B站千锋python逆战班
ps:笔记仅用于学习查阅