码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python类的疑难点


    一、继承

    1、Python类的继承与Java非常不同,它是通过直接在子类名称后面跟上小括号(),在括号里面写上父类的名称,例如:

    父类:

    class Cat():

    子类:

    class SubCat(Cat):

    2、特殊的类:object

    2.1、object类是所有类的父类,因此所有类都有object类的属性和方法。

    1. class Dog:
    2. def __init__(self):
    3. self.name = "hello"
    4. dog = Dog()
    5. print(dir(dog))

    输出的结果如下:

    ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'name']

    2.2、class Layer(object)

    在老的代码里面会有上的写法,如果不直接写的话,是不会从object类继承的,也就是不会继承object相关的属性和方法,但是新版本的Python全部都继承自object,就像Java的Object类一样。所以大家看到有些代码里面会有如上的写法。

    2.3、dir()函数

    返回对象的属性和方法

    二、类的对象可以像函数一样被调用

    经常会在代码里面看到如下的写法:

    1. dog = Dog()
    2. dog()

    首先创建一个对象,然后对象像函数一样被调用了。what?

    1、__call__()是一种magic method,在类中实现这一方法可以使该类的实例(对象)像函数一样被调用。默认情况下该方法在类中是没有被实现的。

    2、如果类没有实现该函数,调用__call__()会报错吗?

    Traceback (most recent call last):
      File "Dog.py", line 8, in
        dog()
    TypeError: 'Dog' object is not callable

    从代码运行的结果看,直接报错了!!!

    3、重写__call__()

    1. class Dog:
    2. def __init__(self):
    3. self.name = "hello"
    4. def __call__(self, *args, **kwargs):
    5. print("hello world!!!")
    6. dog = Dog()
    7. dog()

    程序输出结果:

    hello world!!!

    其实这两种写法等价:

    dog() == dog.__call__()

  • 相关阅读:
    解决Github上的README无法显示图片
    [附源码]java毕业设计农村留守儿童帮扶系统
    【从零学习python 】70.网络通信方式及其应用:从直接通信到路由器连接多个网络
    C++模板编程(14)---名称查询(Looking Up Names)
    [机器学习、Spark]Spark MLlib实现数据基本统计
    (C语言)printf打印的字符串太长了,我想分两行!
    学GoWorld,go 1.21
    Cockpit -- 一个通过浏览器监控和管理多台Linux服务器的强大工具
    Mac桌面上的文件消失,Finder中可以访问到
    -1- threejs 场景常见的方法和属性
  • 原文地址:https://blog.csdn.net/duzm200542901104/article/details/127777161
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号