博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python|面向对象
阅读量:5354 次
发布时间:2019-06-15

本文共 3931 字,大约阅读时间需要 13 分钟。

#一、类、对象定义及使用#定义类语法:class  类名(父类):代码块注意:()可有可无#class Student:#class Student():#创建对象(实例)语法:对象名=类名()   注意:Java语言在实例化对象是,采用new关键字,而Python语言不需要。#student=Student()#isinstance()语法:isinstance()是检测一个对象是否是一个类的实例,语法格式:isinstance(对象,类),结果返回True和False# class Student:#     print(123)# student=Student()# print(isinstance(student,Student))        #True#二、属性和方法#1.属性# 属性:分为类属性和对象属性# 属性修饰符:私有属性、公共属性#(1)类属性# class Student:#     name='张三'#(2)对象属性# class Student:#     name='张三'# student=Student()# student.age=18# print(student.name)    #张三# print(student.age)    #18#拓展:类属性和对象属性的区别?# 类属性直接通过类名就可以调用,比如:Student.name# 对象属性必须通过对象名调用,比如:studentn.name#(3)公共属性# 没有任何修饰符,该类型的属性可以被任意一个对象所调用#name="张三"#print(name)#(4)私有属性# 私有属性,不能通过对象调用,也不能通过类名调用,只能在本类中调用,# 类似Java语言中的private,如果想要在外部调用,则需提供get和set方法,私有属性通过双下划线修饰__# __name='李四'# print(__name)    #李四#2.方法#方法分类:对象方法、类方法、静态方法#(1)对象方法# 定义在类中的函数被称为方法,所有的实例都可以访问# 注意:对象方法,必须默认传递一个参数self,类似java中的this关键字# 调用:只能通过对象调用#定义对象方法# class Student:#     def study(self):#         print("我还在学习")# #调用# student=Student()# student.study()        #我还在学习# (2)类方法# 被@classmethod修饰的方法,被称为类方法# 参数:cls# 调用:可以通过类调用#定义类方法# class Student:#     @classmethod#     def sleep(cls):#         print("睡觉")# #调用# Student.sleep()        #睡觉#(3)静态方法# 被@staticmethod修饰的方法,被称为静态方法# 参数:无参数# 调用:可以通过类和对象调用#定义静态方法# class Student:#     @staticmethod#     def play():#         print("play basketball")# #调用# #类名调用# Student.play()    #play basketball# #对象调用# student=Student()# student.play()    #play basketball#三、构造方法# 构造方法是以双下划线__开头,双下划线__结尾,方法名叫init,构造方法不需要自己调用,# 在实体化对象时调用,和Java中的构造方法一样,语法格式:def  __init__(self,参数):代码块# class Student:#     name='sss'#     __age=18        #     def __init__(self,name,age):#         print(456)#         self.name=name#         self.__age=age# student=Student('张三','19')# print(student.name)#四、封装# 封装,是给类中的属性提供get、set方法,语法格式:# def  set方法(self):代码块# def  get方法(self):代码块# class Student:#     __name='sss'#     def setName(self,name):#         self.name=name#     def getName(self):#         return self.name# student=Student()# student.setName('张三')# print(student.getName())    #张三#get、set装饰器# get方法装饰器:@property# set方法装饰器:@属性名.setter# 调用:直接通过对象.属性名即可# 注意:get方法修饰器必须写到set方法修饰器前面# class Student:#     __name='张三'#     print(__name)    #张三#     @property#     def name(self):#         return self.__name#     @name.setter#     def name(self,name):#         self.__name=name# student=Student()# student.name='李四'# print(student.name)    #李四# 五、继承# 继承语法class  子类(父类1,父类2):通过语法格式可以看出Python语言支持多继承,Java语言只支持单继承class Student:    name='sss'    __age=18            def __init__(self,name,age):        print(name)        self.name=name        self.__age=age    def study(self):        print("Student我还在学习")class Person:    def study(self):        print("Person我还在学习")class Boy(Student):    def sleep(self):        print("睡觉")    # def study(self):    #     print("Boy我还在学习")#issubclass()# issubclass()方法作用:# 检测一个类是否是另外一个类的子类# 语法:issubclass(子类,父类)print(issubclass(Boy,Student))    #Trueprint(issubclass(Boy,Person))    #False# 多继承# 查看一个类的继承关系使用:# 类名.__bases__属性# 多继承特点:一层一层获取,先找自己的类中,再从继承关系中找print(Boy.__bases__)    #(
,)boy=Boy('何洋',19) #何洋boy.study() #Student我还在学习boy.sleep() #睡觉# 六、多态class Student: __name='aaa' print("这是Student") def __init__(self,name): self.__name=name @property def name(self): return self.__name @name.setter def name(self,name): self.__name=name class Boy: __name='aaa' print("这是Boy") def __init__(self,name): self.__name=name @property def name(self): return self.__name @name.setter def name(self,name): self.__name=nameclass Girl: print("这是Girl")def eat(obj): print("%s正在吃饭"%obj.name)student=Student('李四')boy=Boy('小男孩')girl=Girl()eat(student) #李四正在吃饭eat(boy) #小男孩正在吃饭eat(girl) #报错

今天学了python感觉收获颇多。

转载于:https://www.cnblogs.com/liuyongqi2332826438/p/9713861.html

你可能感兴趣的文章
strcpy函数里的小九九
查看>>
搭建ssm过程中遇到的问题集
查看>>
OpenLayers绘制图形
查看>>
tp5集合h5 wap和公众号支付
查看>>
Flutter学习笔记(一)
查看>>
iOS10 国行iPhone联网权限问题处理
查看>>
洛谷 P1991 无线通讯网
查看>>
[HIHO1184]连通性二·边的双连通分量(双连通分量)
查看>>
Codeforces Round #178 (Div. 2) B. Shaass and Bookshelf 【动态规划】0-1背包
查看>>
SparkStreaming 源码分析
查看>>
【算法】—— 随机音乐的播放算法
查看>>
mysql asyn 示例
查看>>
DataGrid 点击 获取 行 ID
查看>>
git 使用
查看>>
边框圆角方法
查看>>
asp.net WebApi自定义权限验证消息返回
查看>>
php中eval函数的危害与正确禁用方法
查看>>
20172315 2017-2018-2 《程序设计与数据结构》第十一周学习总结
查看>>
MySQL添加、修改、撤销用户数据库操作权限的一些记录
查看>>
关于谷歌浏览器Chrome正在处理请求的问题解决
查看>>