一:类即类型
#在python3中统一了类与类型的概念,类就是类型
class OldboyStudent:
school='oldboy'
def __init__(self, x, y, z): #会在调用类时自动触发
self.name = x #stu1.name='耗哥'
self.age = y #stu1.age=18
self.sex = z #stu1.sex='male'
def choose_course(self,x):
print('%s is choosing course' %self.name)
stu1=OldboyStudent('耗哥',18,'male')
# stu1.choose_course(1) #OldboyStudent.choose_course(stu1,1)
# OldboyStudent.choose_course(stu1,1)
python中列表应用
l=[1,2,3] #l=list([1,2,3])# print(type(l))
# l.append(4) #list.append(l,4)
list.append(l,4)
print(l)
二:为对象定制自己独有的属性
class OldboyStudent:
school='oldboy'
def __init__(obj, x, y, z): #会在调用类时自动触发
obj.name = x #stu1.name='耗哥'
obj.age = y #stu1.age=18
obj.sex = z #stu1.sex='male'
def choose_course(self):
print('is choosing course')
#调用类时发生两件事
#1、创造一个空对象stu1
#2、自动触发类中__init__功能的执行,将stu1以及调用类括号内的参数一同传入
stu1=OldboyStudent('耗哥',18,'male') #OldboyStudent.__init__(stu1,'耗哥',18,'male')
stu2=OldboyStudent('猪哥',17,'male')
stu3=OldboyStudent('帅翔',19,'female')
#对象本质也就是一个名称空间而已,对象名称空间是用存放对象
自己独有的名字/属性,而#类中存放的是对象们共有的属性
三:绑定方法
class OldboyStudent:
school='oldboy'
def __init__(self, x, y, z): #会在调用类时自动触发
self.name = x #stu1.name='耗哥'
self.age = y #stu1.age=18
self.sex = z #stu1.sex='male'
def choose_course(self,x):
print('%s is choosing course' %self.name)
def func():
pass
# 类名称空间中定义的数据属性和函数属性都是共享给所有对象用的
# 对象名称空间中定义的只有数据属性,而且时对象所独有的数据属性
# 类中定义的函数是类的函数属性,类可以使用,但使用的就是一个普通的函数而已,意味着需要完全遵循函数的 参 数 规则,该传几个值就传几个
# print(OldboyStudent.choose_course)
# OldboyStudent.choose_course(123)
# 类中定义的函数是共享给所有对象的,对象也可以使用,而且是绑定给对象用的,
#绑定的效果:绑定给谁,就应该由谁来调用,谁来调用就会将谁当作第一个参数自动传入
# print(id(stu1.choose_course))
# print(id(stu2.choose_course))
# print(id(stu3.choose_course))
# print(id(OldboyStudent.choose_course))
# print(id(stu1.school))
# print(id(stu2.school))
# print(id(stu3.school))
# print(id(stu1.name),id(stu2.name),id(stu3.name))
# 补充:类中定义的函数,类确实可以使用,但其实类定义的函数大多情况下都是绑定给对象用的,所以在类中定义的函数都应该自带一个参数self
四;继承
1、什么是继承
继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类
继承的特性是:子类会遗传父类的属性
强调:继承是类与类之间的关系
2、为什么用继承
继承的好处就是可以减少代码的冗余
3、如何用继承
在python中支持一个类同时继承多个父类
在python3中
如果一个类没有继承任何类,那默认继承object类
在python2中:
如果一个类没有继承任何类,不会继承object类
新式类
但凡继承了object的类以及该类的子类,都是新式类
经典类
没有继承object的类以及该类的子类,都是经典类
在python3中都是新式类,只有在python2中才区别新式类与经典类
五:派生
#派生:子类中新定义的属性,子类在使用时始终以自己的为准
class OldboyPeople:
school = 'oldboy'
def __init__(self,name,age,sex):
self.name = name #tea1.name='egon'
self.age = age #tea1.age=18
self.sex = sex #tea1.sex='male'
class OldboyStudent(OldboyPeople):
def choose_course(self):
print('%s is choosing course' %self.name)
class OldboyTeacher(OldboyPeople):
# tea1,'egon',18,'male',10
def __init__(self,name,age,sex,level):
# self.name=name
# self.age=age
# self.sex=sex
OldboyPeople.__init__(self,name,age,sex)
self.level=level
def score(self,stu_obj,num):
print('%s is scoring' %self.name)
stu_obj.score=num
stu1=OldboyStudent('耗哥',18,'male')
tea1=OldboyTeacher('egon',18,'male',10)
#对象查找属性的顺序:对象自己-》对象的类-》父类-》父类。。。
# print(stu1.school)
# print(tea1.school)
# print(stu1.__dict__)
# print(tea1.__dict__)
tea1.score(stu1,99)
print(stu1.__dict__)
# 在子类派生出的新功能中重用父类功能的方式有两种:
#1、指名道姓访问某一个类的函数:该方式与继承无关