文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python|面向对象

2023-01-30 22:22

关注
#一、类、对象定义及使用
#定义类语法: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))    #True

print(issubclass(Boy,Person))    #False

# 多继承
# 查看一个类的继承关系使用:
# 类名.__bases__属性
# 多继承特点:一层一层获取,先找自己的类中,再从继承关系中找
print(Boy.__bases__)    #(<class '__main__.Student'>,)
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=name

class Girl:
    print("这是Girl")

def eat(obj):
    print("%s正在吃饭"%obj.name)

student=Student('李四')
boy=Boy('小男孩')
girl=Girl()
eat(student)    #李四正在吃饭
eat(boy)        #小男孩正在吃饭
eat(girl)        #报错

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯