python 面向对象

python 中的对象创建方法

python 复制代码
 def __init__(self,name:str,age:int):
        self._name=name
        self._age=age
    def __new__(self,name:str,age:int):
        self.__init__(name,age)
        print("创建对象Student")
    def __init_subclass__(cls, **kwargs):
        print('初始化父类')_
    def __del__(self):
        print("销毁Student对象")

    #对象转字典
    print(Student2.__dict__)
    print(s1.__dict__)

python 中定义私用属性和私用方法

python 复制代码
    def __init__(self,name:str,age:int):
        self._name=name
        self._age=age
python 复制代码
    def __map2__(self):
        m = {}
        m["name"] = self._name
        m["age"] = self._age
        return m
    
    def map(self):
        return self.__map2__()

子类中调用父类的方法

python 复制代码
class JuioriStudent(Student):
    def __init__(self,name:str,age:int,sex:int):
        #super().__init__(name,age)
        Student.__init__(self,name,age)
        self.sex = sex

python 中的static 方法如何定义,适用@staitcmethod

python 复制代码
class A:
    @staticmethod
    def add(a,b):
        return a+b
class B(A):
    @staticmethod
    def add(a,b,c):
        return a + b + c
if __name__ == "__main__":
    print(A.add(1,2))
    print(B.add(1,2,3))

python 同一个类中不能实现和java 一样的根据参数列表的重载

复制代码
  def add(self, a,b):
        return a + b
    def add(self,a,b,c):
        return a + b + c

python 为何是多继承

为了提高代码的服用性,更好运用mixin

多继承最大的理论难题是"菱形继承问题"(Diamond Problem),即当一个类从两个父类继承,而这两个父类又继承自同一个祖父类时,方法调用的顺序会产生歧义25。

Python 并没有回避这个问题,而是通过C3 线性化算法 (C3 Linearization)完美地解决了它。Python 会计算出一个方法解析顺序(MRO, Method Resolution Order),这是一个明确的列表,规定了在查找方法时应该遵循的顺序23。

python 复制代码
class Father:
    def __init__(self):
        print("father")
        self.money = 400
    def getFatherMoney(self):
        return "father money is {} ".format(self.money)


class Monther:
    def __init__(self):
        print("monther")
        self.money = 300
    def getMontherMoney(self):
        return "monther money is {} ".format(self.money)

class Child(Father,Monther):
    def __init__(self):
        super().__init__()
        print("child")
        self.money = 200

    def getMoney(self):
        return "child money is: {} ".format(self.money)
  1. python 中支持重载,重写吗?
  • ‌**重写(Override)**‌:子类可以重新定义从父类继承的方法,以满足自身特定需求。例如,在子类中定义与父类同名的方法。
  • 重载(Overload) ‌:Python 不支持传统意义上的方法重载(即通过参数类型或数量区分多个同名函数),但可以通过默认参数、*args**kwargsfunctools.singledispatch 等方式模拟类似行为。
相关推荐
2301_803875616 小时前
PHP 中处理会话数组时的类型错误解析与修复指南
jvm·数据库·python
m0_743623926 小时前
c++如何批量修改文件后缀名_std--filesystem--replace_extension【实战】
jvm·数据库·python
2401_873479406 小时前
如何利用IP查询定位识别电商刷单?4个关键指标+工具配置方案
开发语言·tcp/ip·php
我爱cope6 小时前
【从0开始学设计模式-10| 装饰模式】
java·开发语言·设计模式
2501_914245936 小时前
CSS如何处理CSS变量作用域冲突_利用特定类名重写变量值
jvm·数据库·python
菜鸟学Python7 小时前
Python生态在悄悄改变:FastAPI全面反超,Django和Flask还行吗?
开发语言·python·django·flask·fastapi
<-->7 小时前
Megatron(全称 Megatron-LM,由 NVIDIA 开发)和 DeepSpeed(由 Microsoft 开发)
人工智能·pytorch·python·深度学习·transformer
测试19987 小时前
2026最新软件测试面试八股文【附文档】
自动化测试·软件测试·python·测试工具·面试·职场和发展·测试用例
浪浪小洋8 小时前
c++ qt课设定制
开发语言·c++
charlie1145141918 小时前
嵌入式C++工程实践第16篇:第四次重构 —— LED模板,从通用GPIO到专用抽象
c语言·开发语言·c++·驱动开发·嵌入式硬件·重构