1、为对象指定自己独有的属性
class OldboyStudent:
school="oldboy"
count=0
def __init__(self,x,y,z):#必须函数名为__init__,在调用类时自动触发
self.name = x
self.age = y
self.sex = z
OldboyStudent.count+=1
def choose_course(self):
print("%s is choosing course" %self.name)
#调用类时发生两件事
#发生两件事,第一件事创造出一个空对象stu1#对象本质就是名称空间,在点后面的名称都称为属性
#自动触发类中的__init__功能的执行,将stu1以及调用类括号内的参数一同传入
stu1 = OldboyStudent("yf",18,"male")#因为默认传入stu1所以只要传入剩下参数即可
OldboyStudent.xx=2 #增加属性,往类名称空间内添加
print(stu1.xx) #从对象空间开始找,没有就去类空间找,如果类也没有则报错
print(stu1.__dict__) #显示出stu1内函数__init__自动触发后的所有属性
print(stu1.name) #选择stu1内的某个属性
print(stu1) #显示出stui内存地址
stu2 = OldboyStudent("fxc",18,"female")
stu1.choose_course() #用sut1对象运行类中的函数,形成绑定的关系
# print(stu1.count) #不断调用类产生对象,可以通过计数得到个数,需要注意的是默认计数的开始要放在类的名称空间内
# print(stu2.count) #计数的开始而是在对象的__init__内,需要通过类名称.count来达到与默认值的连接来计数
# 类名称空间中定义的数据属性和函数属性都是共享给所有对象用的
# 对象名称空间中定义的只有数据属性,而且是对象所独有的数据属性
2、继承与派生
'''
1、什么是继承
继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类
继承的特性是:子类会遗传父类的属性
强调:继承是类与类之间的关系
2、为什么用继承
继承的好处就是可以减少代码的冗余
3、如何用继承
在python中支持一个类同时继承多个父类
在python3中
如果一个类没有继承任何类,那默认继承object类
在python2中:
如果一个类没有继承任何类,不会继承object类
新式类
但凡继承了object的类以及该类的子类,都是新式类
经典类
没有继承object的类以及该类的子类,都是经典类
在python3中都是新式类,只有在python2中才区别新式类与经典类
新式类vs经典类?
'''
class king:
school = "oldbay"
def __init__(self,name,age):
self.name=name
self.age=age
class OldbayStudent(king):#在括号内继承父类的内容为继承
def __init__(self,name,age,course):#在自己内的特征,新诞生的属性为派生
king.__init__(self,name,age)#king访问函数属性,为访问普通函数
self.course=course
def select(self,course):
print("%s 选择课程 %s" %(self.name,self.course))
class OldbayTeather(king):
def __init__(self,name,age,grade):
king.__init__(self,name,age)
self.grade=grade
def system(self,stu_name,num):#提供学生名与打分
print("%s 打分" %self.name)
stu_name.score=num#学生名.名称=打分分数,直接加到学生的对象名称空间中,__init__内
user1=OldbayStudent("yf",18,"python")
user2=OldbayStudent("fxc",21,"python")
user3=OldbayStudent("zz",21,"linex")
user4=OldbayTeather("egon",18,10)
user4.system(user1,99)#运行教师的函数,传入对应的学生名与分数,
# 分数会对应学生名进入学生的名称空间对象中
print()