python面向对象 - 24 抽象类 / 内置类属性

本文介绍了Python中的抽象类,强调通过指定metaclass=ABCMeta来声明抽象类,其目的是用于继承而不是实例化。同时,提到了抽象方法,即只有声明没有实现,必须由子类继承。此外,还探讨了Python内置的类属性,举例说明如何通过这些属性获取类的相关信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.抽象类

(1).在创建类时通过指定metaclass=ABCMeta可以将一个类声明为抽象类

(2).所谓抽象类就是不能创建对象的类 它存在的价值是留给它的子类去继承

(3).经验:我们强烈建议将用来继承的类声明为抽象类

注意:(python语法中是没有真正的抽象类和抽象方法,需要使用abc模块去实现类和方法的抽象)

抽象类:不会使用这个类去对象创建(不会实例化),只是用继承

抽象方法:只声明不实现,只能被继承

ABCMeta -> 抽象类abstractmethod -> 抽象方法

#这样声明一个类就是告诉别人这个类是抽象类,只能继承,不能去创建它的对象
class Shape(object,metaclass=ABCMeta):

    # 抽象方法继承后必须重写
    @abstractmethod
    def area(self):
        pass
        
class Circl(Shape):

    def foo(self):
        pass
    def area(self):
        print('aaa')

c1 = Circl()

2.内置类属性

python中,系统自动给所有类添加一些类属性,用来获取类的相关信息

例如: 创建一个人类
class Person():
    '''人类'''

    # 类属性
    num = 0

    # 类方法
    @classmethod
    def foo(cls):
        print('人类')

    def __init__(self, name, age):

        self.name = name
        self.age = age

    def run(self):
        print('%s跑起来连乌龟都追不上他' % self.name)

print(Person)   #>>><class '__main__.Person'>

# a. 获取类的名字
print(Person.__name__)  #>>>Person

# b. 获取类的说明文档
print(Person.__doc__)   #>>>人类

# c. 获取所有的类相关的内容
print(Person.__dict__)  

# d. 获取当前类所有的模块名
print(Person.__module__)  #>>>__main__

# e. 获取当前类的基类
print(Person.__bases__)   #>>>(<class 'object'>,)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值