python中的继承与多态,dir()函数

Python继承

在继承关系中,已有的、设计好的类称为父类或基类,新设计的类称为子类或派生类。派生类可以继承父类的公有成员,但是不能继承其私有成员。如果需要在派生类中调用基类的方法,可以使用内置函数super()或者通过“基类名.方法名()”的方式来实现这一目的。

在Python中,如果一个类需要继承另一个类的成员,可以使用以下方式进行定义:

class BaseClass:
    def __init__(self):
        self.public_member = "I am a public member"
        self.__private_member = "I am a private member"  # 双下划线开头的成员变量为私有成员

    def public_method(self):
        print("This is a public method")

    def __private_method(self):
        print("This is a private method")

class DerivedClass(BaseClass):
    def derived_method(self):
        # 调用从父类继承的公共成员
        print(self.public_member)

        # 无法调用父类的私有成员
        # print(self.__private_member)
        
        # 调用从父类继承的公共方法
        self.public_method()

        # 通过super()函数调用父类的方法
        super().public_method()

        # 无法直接调用基类的私有方法
        # self.__private_method()

在以上代码中,BaseClass 是一个基类,DerivedClass 是一个派生类。在 BaseClass 中,定义了一个公有成员 public_member 和一个私有成员 __private_member,以及一个公有方法 public_method 和一个私有方法 __private_method。在 DerivedClass 中,继承了 BaseClass 的公有成员 public_member 和公有方法 public_method,并且定义了一个派生类方法 derived_method

在派生类中,我们可以通过继承来使用从基类继承的公共成员和方法,但是无法直接调用基类中的私有成员或方法。如果需要在派生类中调用基类的方法,可以使用内置函数 super() 或者通过“基类名.方法名()”的方式来实现这一目的。在 derived_method 中,我们展示了如何使用 super().public_method() 来调用基类的 public_method 方法。

Python支持多继承,如果父类中有相同的方法名,而在子类中使用时没有指定父类名,则Python解释器将从左向右按顺序进行搜索。

以下是一个简单的示例代码,用于说明Python支持多继承时的方法解析顺序(MRO)问题:

class A:
    def hello(self):
        print("Hello from A")

class B:
    def hello(self):
        print("Hello from B")

class C(A, B):
    pass

class D(B, A
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值