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 等方式模拟类似行为。
相关推荐
foundbug9994 分钟前
最优化问题的外点罚函数法与内点罚函数法-MATLAB实现
开发语言·matlab
梦想三三5 分钟前
【NLP入门到实战】TF-IDF算法详解 + 红楼梦120回关键词提取
人工智能·python·计算机视觉
弹简特5 分钟前
【零基础学Python】05-Python函数完全指南:从初阶定义到进阶参数,一篇打通核心难点
开发语言·python
AugustRed11 分钟前
A2UI 完整学习指南(含 Java 后端 + 前端实战示例)
java·开发语言·前端
jingling55518 分钟前
自建技术博客实战(三):工具专栏——地图定位、声音复刻与 rembg 抠图
android·开发语言·前端·ai·nextjs
basketball61620 分钟前
C++进阶:1. 引用折叠规则
java·开发语言·c++
学地理的小胖砸22 分钟前
【批量处理tiff文件生成jpg缩略图】
数据库·人工智能·python
机汇五金_24 分钟前
通信设备防雨箱如何兼顾防护与散热?
网络·python
糖果店的幽灵34 分钟前
LangChain 1.3 完全教程:从入门到精通-Part 7: Documents(文档处理)
java·python·langchain
Wonderful U37 分钟前
基于Python爬虫+Django的轻量化天气预报系统:从数据抓取到可视化展示的完整实战
爬虫·python·django