文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python3的面向对象举例分析

2023-06-19 12:41

关注

这篇文章主要介绍“Python3的面向对象举例分析”,在日常操作中,相信很多人在Python3的面向对象举例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python3的面向对象举例分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

# 面向对象import abcfrom enum import Enum, unique@unique  # unique确保无重复值class Weekday(Enum):    """    枚举类    """    # 左边为name,右边为value    Sun = 0    Mon = 1    Tue = 2    Wed = 3    Thu = 4    Fri = 5    Sat = 6class Person(metaclass=abc.ABCMeta):    """    Person 为抽象类,Person的子类需要实现抽象方法    """    @abc.abstractmethod    def abs_m(self):        print("Person:abs_m")class Student(Person):    """    Student Doc    """    # 实现抽象方法    def abs_m(self):        print("absMethod")    # 使用父类引用    def sup(self):        super().abs_m()    # count为类属性    count = 0    # 类方法    @classmethod    def cm(cls):        print("classMethod:", Student.count)    # 静态方法    @staticmethod    def sm():        print("staticMethod:", Student.count)    # 实例私有方法    def __p(self):        # 如果没有使用到self,这里可能会警告this method may be static        print("私有方法", self)    # 定义该类只允许有这些属性    __slots__ = ('name', '__age', "_gender")    def __init__(self, name, age, gender):        # 这是实例属性,外部可以直接访问        self.name = name        # 两个下划线开头是私有属性,在外部不能访问(如果要强行访问,可以使用s._Student__name,但不建议这样做)        self.__age = age        # 一个下划线开头也表示私有属性,在外部可以直接访问,但不建议访问(为什么这样设计?)        self._gender = gender        pass    # 双下划线开头和结尾的是特殊方法或变量,不是私有的,外部可以访问    # 因此不要把方法或属性名定义为双下划线开头和结尾    def __str__(self):        return f"{self.name}, {self.__age}, {self._gender}"if __name__ == '__main__':    print(Student("jack", 12, "male").cm())    print(Student("jack", 12, "male").sm())    s = Student("jack", 12, "male")    # s的具体类型    print(type(s).__name__)    # 内置attr函数使用    print(hasattr(s, "name"))    print(getattr(s, "name"))    # print(delattr(s, "name"))    # print(setattr(s, "abc", 1))    # s是否是某个类型    print(isinstance(s, Student))    # Student类是否是某个类的子类    print(issubclass(Student, object))    # 调用s.__str__()方法    print(s)    # 使用枚举类    day = Weekday.Monprint(day.name)    print(day.value)
class A(object):    bar = 1def func1(self):print('foo')    @classmethoddef func2(cls):print('func2')print(cls.bar)        cls().func1()  # 调用 foo 方法A.func2()  # 不需要实例化
class C(object):    @staticmethoddef f():print('runoob'); C.f();          # 静态方法无需实例化cobj = C()cobj.f()        # 也可以实例化后调用

到此,关于“Python3的面向对象举例分析”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

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

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

软考中级精品资料免费领

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

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

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

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

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

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

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