本文目录一览:
- 1、Python设计模式之抽象工厂模式
- 2、python下的抽象类的用途和意义?
- 3、python抽象基类是什么?用途是什么?
- 4、请问python的抽象是什么,求解
- 5、python抽象基类
- 6、python基础(abc类)
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
这是用来生成抽象基础类的元类。由它生成的类可以被直接继承。
通过注册进行具体化抽象类
通过继承具体化抽象类