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 等方式模拟类似行为。
相关推荐
yichudu6 分钟前
Python 装饰器 decorator
开发语言·python
电商API_1800790524716 分钟前
速卖通商品采集API技术文章
java·开发语言·c++·api·跨境电商·商品详情
一晌小贪欢17 分钟前
Python办公14:批量解压文件夹内的所有 ZIP/RAR 并自动分类
开发语言·python·excel·数据可视化·python办公
郑州光合科技余经理19 分钟前
海外版外卖系统架构:订单怎么流转、权限怎么分
java·开发语言·前端·系统架构·uni-app·php·ai编程
Python 实战手记19 分钟前
企业微信主体变更公证书办理全解析:适用场景、材料规范、踩坑点与Python信息校验脚本
开发语言·python·企业微信
longxiaozhang621 分钟前
C#异常处理:程序出错了怎么办?
开发语言·数据库·c#
郝学胜_神的一滴30 分钟前
Effective Python 条款 2:遵循 PEP 8 编码风格,写出高质量 Python 代码
python·算法
郝学胜-神的一滴31 分钟前
Effective Python 条款 1:确认你正在使用的 Python 版本
开发语言·数据结构·python·程序人生·算法
RanMatrix41 分钟前
Python列表精讲
python
路多辛1 小时前
全能型 Go Agent 框架 covonaut v1.0.8 发布:新增行内补全与多后端可观测性
开发语言·golang·agent