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 等方式模拟类似行为。
相关推荐
qq5918406851 小时前
uiautomator2自动化安卓手机操作
python
80s7771 小时前
动态代理和静态代理的区别,动态代理怎么提高网络安全性
python
浪子明X2 小时前
十六位账本怎样发现传输差错:Internet Checksum 生活类比
开发语言
niucloud-admin3 小时前
JAVA V6 多商户商城 开发文档——job 计划任务开发
java·python·github
小叶肥辉3 小时前
LangChain链和LangGraph图的学习笔记【三】——分别用langchain_openai库和langchain_community库调用大模型
笔记·python·langchain
2401_873479404 小时前
IP属地为什么有时显示外省?用IP查询工具核查动态分配、运营商出口与GeoIP库
python·tcp/ip·ip
xiangyun614 小时前
【408数据结构 08】队列:循环队列判空判满,408年年考,一次讲清
c语言·开发语言·数据结构·c++·算法
xiangyun615 小时前
【408数据结构 06】双链表、循环链表、静态链表
c语言·开发语言·数据结构·c++·算法
OKkankan6 小时前
LangChain 能力详解!:输出解析、RAG、向量数据库与 Retriever 检索器
数据结构·python·langchain·ai应用
白远山6 小时前
家政服务家政社区派单实战:调度系统架构设计与实现指南
java·开发语言·小程序·架构·需求分析