首页 > 编程知识 正文

python基础之抽象(抽象类 python)

时间:2023-12-24 01:06:48 阅读:319664 作者:EIYK

本文目录一览:

Python设计模式之抽象工厂模式

Python设计模式之抽象工厂模式

这篇文章主要为大家详细介绍了Python设计模式之抽象工厂模式,感兴趣的小伙伴们可以参考一下

python面向对象编程入门,我们需要不断学习进步

"""抽象工厂模式的实现"""

import random

class PetShop:

"""宠物商店"""

def __init__(self, animal_factory=None):

"""宠物工厂是我们的抽象工厂。我们可以随意设置。"""

self.pet_factory = animal_factory

def show_pet(self):

"""使用抽象工厂创建并显示一个宠物"""

pet = self.pet_factory.get_pet()

print("我们有一个可爱的 {}".format(pet))

print("它说 {}".format(pet.speak()))

print("我们还有 {}".format(self.pet_factory.get_food()))

# 工厂生产的事物

class Dog:

def speak(self):

return "汪"

def __str__(self):

return "Dog"

class Cat:

def speak(self):

return "喵"

def __str__(self):

return "Cat"

# Factory classes

class DogFactory:

def get_pet(self):

return Dog()

def get_food(self):

return "狗食"

class CatFactory:

def get_pet(self):

return Cat()

def get_food(self):

return "猫粮"

# 随机创建合适的工厂

def get_factory():

"""让我们动起来!"""

return random.choice([DogFactory, CatFactory])()

# 多个工厂显示宠物

if __name__ == "__main__":

for i in range(4):

shop = PetShop(get_factory())

shop.show_pet()

print("=" * 20)

以上就是本文的全部内容,希望对大家的学习有所帮助

python下的抽象类的用途和意义?

抽象类是不完整的,并且它只能用作基类。它与非抽象类的不同: 1、抽象类不能直接实例化,并且对抽象类使用 new 运算符是编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。 2、允许(但不要求)抽象类包含抽象成员。 3、抽象类不能被密封。 当从抽象类派生非抽象类时,这些非抽象类必须具体实现所继承的所有抽象成员,从而重写那些抽象成员。在下边的示例中: abstract class A{ public abstract void F();} abstract class B: A{ public void G() {}} class C: B{ public override void F() { // actual implementation of F }}  抽象类 A 引入抽象方法 F。类 B 引入另一个方法 G,但由于它不提供 F 的实现,B 也必须声明为抽象类。类 C 重写 F,并提供一个具体实现。由于 C 中没有了抽象成员,因此可以(但并非必须)将 C 声明为非抽象类。 抽象类与接口紧密相关。然接口又比抽象类更抽象,这主要体现在它们的差别上:1)类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承,从抽象类派生的类仍可实现接口,从而得出接口是用来解决多重继承问题的。2)抽象类当中可以存在非抽象的方法,可接口不能且它里面的方法只是一个声明必须用public来修饰没有具体实现的方法。3)抽象类中的成员变量可以被不同的修饰符来修饰,可接口中的成员变量默认的都是静态常量(static final)。4)这一点也是最重要的一点本质的一点"抽象类是对象的抽象,然而接口是一种行为规范"。

python抽象基类是什么?用途是什么?

有时候某些类型都有一些共同的特征,它们可以被抽象出来形成一个基类,但这个基类本身不能实例化,只能由子类继承并实现其中的抽象方法后实例化子类对象,这样的类叫抽象类。

例如手机、电脑、电视机都可以归类到电子设备,电子设备就是一个抽象类,它具有通电、运行、关闭等抽象方法,但你不可以直接new一个电子设备类的对象,因为没法给它指定具体的形状、功能等信息,只能从电子设备类派生出手机类、电脑类、电视类,并分别给出不同的通电、运行、关闭方法的具体实现,然后new这些类的对象。这就是多态的体现,C++/Java等静态语言原生支持多态,拥有abstract关键字,可以用来定义抽象类。

而Python是一门鸭子类型的语言,它并不具有真正的多态,所以也没有语言原生的抽象类支持,只能通过第三方的封装类如ABC模拟实现。对于没有接触过C++和Java的Python学习者来说较难理解。

请问python的抽象是什么,求解

这个问题本身就是很抽象哦。

抽象就是高级编程语言的特点啦(也不用很高级,支持继承的都可以,面向对象语言都支持继承),抽象就是面向对象语言的一个特点,将很多事物的共性问题拿出来。然后封装起来,这样可以减少代码量,同时让调用变得很简单。举个例子。各种动物都会"说话"。那说话就是个共性了。那就抽象出来。

class Animal():

    def talk(self):

        pass

class Human(Animal):

    def talk(self):

        print('哈哈哈,我会说人话')

class Goat(Animal):

    def talk(self):

        print('咩咩咩')

unkownanimal=Human()

unkownanimal.talk()

unkownanimal=Goat()

unkownanimal.talk()

个人见解,帮助理解,不明白可追问。

python抽象基类

有时,我们抽象出一个基类,知道要有哪些方法,但只是抽象方法,并不实现功能,只能继承,

而不能被实例化,但子类必须要实现该方法。

 但是注意,实例化Base,仍然是报错的,因为抽象基类只能继承而不能实例化,子类要实例化

必须先实现该方法。

为了理解抽象基类,你可以这样想,我们有水果这个抽象基类,有苹果,香蕉,桃子类等,但你永远只能

吃得到苹果,桃子这些,而不能吃到所谓的“水果”。

参考

python基础(abc类)

ABC是Abstract Base Class的缩写。

Python本身不提供抽象类和接口机制,要想实现抽象类,可以借助abc模块。

abc类中常见的方法有:ABCMeta,abstractmethod,classmethod

这是用来生成抽象基础类的元类。由它生成的类可以被直接继承。

通过注册进行具体化抽象类

通过继承具体化抽象类

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。