对象
编程中万物皆对象,一个球、一个文具盒、一个人等等都可以称作为对象。可以理解为对象就是类的一个实例
类=属性+方法
属性是信息、方法是动作
定义类:使用class来定义类
#定义一个class类,可以使用函数指定属性和方法,然后对象实例化,通过对象来调用类中的方法
class Students:
#定义方法
def run(self):
print('I am running')
#定义属性(初始化属性)
def __init__(self,name,age):
self.name = name
self.age = age
stu1 = Students('ghd',30)
#执行动作
stu1.run()
#查看属性
print(stu1.name)
init函数:构造函数,每次实例化对象都会执行init函数,举例说明
classStudents:#定义方法
defrun(self):print('I am running')#定义属性(初始化属性)
def __init__(self,name,age):
self.name=name
self.age=ageprint('我执行了')
stu1= Students('ghd',30)
stu2= Students('gym',30)#执行动作
stu1.run()#查看属性
print(stu1.name)#类可以指定一个大的范围,而对象是将类具体化
###########输出结果#######################
我执行了
我执行了
I am running
ghd
看到俩次“我执行了”,说明在每次生成对象的时候都会执行init函数中的内容
类变量和实例变量
class Students: #创建类
gender = "male" #创建类变量
height = 12
def __init__(self,name,age): #初始化属性
self.name =name
self.age=agedef learn(self): #添加方法
print("好好学习")print(self.name)print(self.gender)defrun(self):print(self.gender,self.height,self.name)
stu1= Students('tom',12) #创建对象
print(stu1.gender) #打印类变量
stu1.gender = "ghd" #修改类变量
print(stu1.gender)#修改对象的值
stu1.name = "cat"
print(stu1.name)
执行结果:
/Users/admin/work/day/base_jobs/bin/python /Users/admin/work/base_jobs/笨办法/练习/类-class.py
male
ghd
cat #说明对象的name形参的值已修改
类的多态:类不一样,但是方法是一样的
#类的多态#类可以指定一个大的范围,而对象是将类具体化
classComputer:def __init__(self,brand,price,color,size):
self.brand=brand
self.price=price
self.color=color
self.size=sizedefplay(self):print('我可以玩游戏')defjob(self):print('我可以办公')#直接输入对象结果会输出一个内存地址,如果想看到对象中值,就需要使用__str__函数
def __str__(self):return self.brand+str(self.price)+self.color+str(self.size)classPhones:defjob(self):print('苹果手机也可以办公')
c= Computer('thinkpad',6000,'red',16)
c.job()
p=Phones()
p.job()
输出结果:
/Users/admin/work/day/base_jobs/bin/python /Users/admin/work/base_jobs/笨办法/练习/类-class.py
我可以办公
苹果手机也可以办公
进程已结束,退出代码0
类的继承
classCat:def __init__(self,name,enjoy,weight):
self.name=name
self.enjoy=enjoy
self.weight=weightdefrun(self):print('蹦蹦跳跳')defjob(self):print("吃喝睡")class Bosi_cat(Cat): #将Cat作为父类
defsetNewName(self,newname):
self.newname=newnamedefrun(self):print('跑跳')
b= Bosi_cat('cat','鱼',1) #需要指定父类中的参数
b.job() #子类继承父类的所有方法
b.run() #如果子类和父类的方法一致,优先执行子类的方法(子类方法优先级高)
输出结果:
/Users/admin/work/day/base_jobs/bin/python /Users/admin/work/base_jobs/笨办法/练习/类-class.py
吃喝睡
跑跳
进程已结束,退出代码0