Python快乐编程基础入门,第十十一章面向对象

#面向对象
#class 类名:
#    类体
#类名首字母大写

#类对象与实例对象
#类对象
class Student:
    school='鹿晗最棒'   #类属性
    def say(self,name):#实例方法
        self.name=name#实例属性
        print('真的',self.name)
print(Student.school)
#实例对象
class Student:
    school='鹿晗'   #类属性
    def say(self,name):#实例方法
        self.name=name #实例属性
        print('我是',self.name)
s1=Student()           #创建实例对象
s1.say('鹿晗最棒')
print(s1.school,s1.name)
#我是鹿晗最棒 鹿晗鹿晗最棒

#类属性和实例属性相同时,通过实例对象访问实例属性,类对象访问类属性
class Student:
    school='鹿晗'   #类属性
    def say(self,school):#实例方法
        self.school=school #实例属性
        print('我是',self.school)
s1=Student()           #创建实例对象
s1.say('鹿晗最棒')
print(Student.school,s1.school)
#我是鹿晗最棒  鹿晗鹿晗最棒

#构造方法
def __init__(self):
    print('调用构造方法')
    self.school='千锋教育'
def say(self):
    print('学校:',self.school)

#析构方法
    def __del__(self):
        print('释放对象占用资源',self.school)
del s1

#类方法,可以访问类的相关属性,不可以访问实例属性
'''
class 类名:
    @classmethod
    def 类方法名(cls)#cls表示类本身
        方法体
'''
class Student:
    num=0
    def __init__(self,name):
        Student.num+=1
        self.name=name
    @classmethod #类方法
    def count(cls):
        print('学生个数:',cls.num)
Student.count()
s1=Student('小千')
s1.count()
#学生个数:0   学生个数:1

#静态方法
'''
class 类名:
    @staticmethod
    def 静态方法名():
        函数体
'''

#运算符重载
class My:
    def __init__(self,r=0,i=0):
        self.r=r
        self.i=i
    def __add__(self,other):
        return my(self.r + other.r,self.i + other.i)
    def __eq__(self,other):
        return self.r==other.r and self.i == other.i
    def __str__(self):
        if self.i < 0:
            return '('+str(self.r)+str(self.i)+'j)'
        else:
            return '('+str(self.r)+'+'+str(self.i)+'j)'
c1=My(6,-4)
c2=My(3,2)
(c1+c2).show()
print(c1==c2)
print(c1,str(c2))
#索引或切片重载
class Data:
    def __init__(self,list):
        self.data=list[:]
    def __getitem__(self,item):
        return self.data[item]
    def __setitem__(self,key,value):#重载索引与切片复制
        self.data[key]=value
    def __contains__(self,item):
        return item in self.data
data=Data([1,2,3,4])
for i in data :
    print(i,end=' ')#1 2 3 4
data[1]='qinfeng'
data[2:]='kouding','chengxu'
print(data.data)#[1,'qianfeng','kouding','chengxu']
print(0 in data)#False


#封装
#类外访问私有属性
class Student:
    def __init__(self,myName,myScore=0):
        self.name=myName
        self.setScore(myScore)
    def setScore(self,myScore):
        if 0<myScore<=100:
            self.__score=myScore
        else:
            self.__score=0
            print(self.name,'成绩有误')
    def getScore(self):
        return self.__score
    def __str__(self):
        return '姓名:'+str(self.name)+'\t成绩:'+str(self.__score)
s1=Student('小千',100)
print(s1)
s1._Student_score=90
print(s1)
#姓名:小千 成绩:100
#姓名:小千 成绩:90

#单一继承
'''
class 基类名(object):
    类体
class 派生类名(基类名):
    类体
'''
#派生类的构造方法名与基类的构造方法名相同
class Person(object):
    def __init__(self,name):
class Student(Person):
    def __init__(self,name):
#如果派生类的构造函数中需要添加参数,则可以在派生类的构造方法中调用基类的构造方法
    def __init__(self,name,score):
        super(Student,self).__init__(name)#或Person.__init__(self,name)
#私有属性不能被继承
class Sshsh(Student,Person)
    def __init__(self,name,score,id,salary)
#同名属性,会显示最后调用的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值