类内的函数共享给对象使用

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()

原文地址:https://www.cnblogs.com/yf18767106368/p/9229695.html