二.3主题: python面向对象

‘’’
面向过程编程为:函数的调用集合
面向对象编程为:对象之间传递信息的集合
对象包含属性和方法
类(由属性和方法组成)可以理解为图纸或者模板
实例是根据类的图纸或者模板创建出来的一个一个对象
类定义为class,关键字self
类的初始化函数_init_
面对对象的三大特点:继承,封装,多态
‘’’
#面向过程

stu1={'name':'xiaohong','score':98}
stu2={'name':'xiaobai','score':81}

#函数

def print_score(stu):
    print('%s:%s' % (stu['name'],stu['score']))

#面向对象
#1.设计类
#属性和方法

class Student(object):
  pass
class Student(object): #类
#方法(内部的函数) self是指向创建的实例本身的
def __init__(self,name,score): #self为默认参数,可以当它没有,不管
    self.name=name
    self.score=score

def print_score(self):
    print('%s:%s' % (self.name, self.score))
#实例化对象1
xiaohong=Student('xiaohong',98) #调用初始化方法_init_,将参数绑定到self关键字上
print(id(xiaohong)); #2140067248392
#实例化对象2
xiaobai=Student('xiaobai',81)
print(id(xiaobai)); #2140067248520(和小红相比,明显内存是不一样的)
#在class内部,对象本身就是self,在外部,就是我们定义的xiaohong这种名字

print(xiaobai.name,xiaobai.score) #xiaobai 81
print(xiaohong.name,xiaohong.score) #xiaohong 98

‘’’
继承,封装,多态
‘’’

#封装

class Student(object): #类
    #方法(内部的函数) self是指向创建的实例本身的
    def __init__(self,name,score): #self为默认参数,可以当它没有,不管
        self.name=name
        self.score=score

def print_score(self):
    print('%s:%s' % (self.name, self.score))
def get_grade(self):
    if self.score>=90:
        return  'A'
    elif self.score>=60:
        return  'B'
    else:
        return  'C'

xiaolv=Student('xiaolv',45) #调用实例的方法
print(xiaolv.get_grade()) #C

‘’’
访问限制
‘’’

xiaolv.score=90
print(xiaolv.get_grade()) #A
#self.__name(__)表示私有
class Student(object): #类
    #方法(内部的函数) self是指向创建的实例本身的
    def __init__(self,name,score): #self为默认参数,可以当它没有,不管
        self.__name=name
        self.__score=score

def print_score(self):
    print('%s:%s' % (self.__name, self.__score))
def get_grade(self):
    if self.__score>=90:
        return  'A'
    elif self.__score>=60:
        return  'B'
    else:
        return  'C'
# 如果还想修改,只能重新写一个方法
def set_score(self,score): #封装属性,来定义是否可以读写等操作
    if 0<=score<=100: #数据清洗
        self.__score=score
    else:
        raise ValueError('分数请大于0小雨等于一百!')
def get_score(self):
    return  self.__score
xiaolv=Student('xiaolv',45)
print(xiaolv.get_grade()) #C
xiaolv=Student("xiaolv",79)
print(xiaolv.get_grade())#通过属性访问,没有结果,因为私有了
#python中没有真正地私有属性和私有方法
print(xiaolv.get_score()) #79 私有过后,不能通过属性访问,只能通过方法来访问

#数据清洗

#print(xiaolv.set_score(101)) #会报错,因为数据限制了
print(xiaolv.set_score(10))
print(xiaolv.get_score()) #10

‘’’
类属性
‘’’

#实例属性 必须通过初始化或者实例化对象,通过对象去访问
class Student(object):
    def __init__(self,name):
        self.name=name
s=Student('bb')
print(s.name)

#类属性(和对象没有关系,不需要实例化对象,直接通过类名访问)—共有的

class Student(object):
    name ='Student'
print(Student.name) #Student
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值