Hướng dẫn what is an abstract class python concrete? - bê tông trăn lớp trừu tượng là gì?

Một lớp trừu tượng có thể được coi là một kế hoạch chi tiết cho các lớp khác. Nó cho phép bạn tạo một tập hợp các phương thức phải được tạo trong bất kỳ lớp con nào được xây dựng từ lớp trừu tượng. Một lớp chứa một hoặc nhiều phương thức trừu tượng được gọi là một lớp trừu tượng. Một phương pháp trừu tượng là một phương pháp có khai báo nhưng không có việc thực hiện. Trong khi chúng tôi đang thiết kế các đơn vị chức năng lớn, chúng tôi sử dụng một lớp trừu tượng. Khi chúng tôi muốn cung cấp một giao diện chung cho các triển khai khác nhau của một thành phần, chúng tôi sử dụng một lớp trừu tượng. [API] cho một tập hợp các lớp con. Khả năng này đặc biệt hữu ích trong các tình huống mà bên thứ ba sẽ cung cấp các triển khai, chẳng hạn như với các plugin, nhưng cũng có thể giúp bạn khi làm việc trong một nhóm lớn hoặc với một cơ sở mã lớn trong đó giữ cho tất cả các lớp trong tâm trí của bạn là khó khăn hoặc không thể. Python đi kèm với một mô -đun cung cấp cơ sở để xác định các lớp cơ sở trừu tượng [ABC] và tên mô -đun đó là ABC. ABC hoạt động bằng cách trang trí các phương pháp của lớp cơ sở là trừu tượng và sau đó đăng ký các lớp bê tông dưới dạng triển khai cơ sở trừu tượng. Một phương pháp trở nên trừu tượng khi được trang trí bằng từ khóa @abstractmethod. Ví dụ - & nbsp;
  
Why use Abstract Base Classes : 
By defining an abstract base class, you can define a common Application Program Interface[API] for a set of subclasses. This capability is especially useful in situations where a third-party is going to provide implementations, such as with plugins, but can also help you when working in a large team or with a large code-base where keeping all classes in your mind is difficult or not possible. 
  
How Abstract Base classes work : 
By default, Python does not provide abstract classes. Python comes with a module that provides the base for defining Abstract Base classes[ABC] and that module name is ABC. ABC works by decorating methods of the base class as abstract and then registering concrete classes as implementations of the abstract base. A method becomes abstract when decorated with the keyword @abstractmethod. For Example –
 

Mã 1:

Python3

from abc import ABC, abstractmethod

I can walk and run
I can crawl
I can bark
I can roar
0
I can walk and run
I can crawl
I can bark
I can roar
1

I can walk and run
I can crawl
I can bark
I can roar
2
I can walk and run
I can crawl
I can bark
I can roar
3

I can walk and run
I can crawl
I can bark
I can roar
2
I can walk and run
I can crawl
I can bark
I can roar
5
I can walk and run
I can crawl
I can bark
I can roar
6
I can walk and run
I can crawl
I can bark
I can roar
7
I can walk and run
I can crawl
I can bark
I can roar
8

I can walk and run
I can crawl
I can bark
I can roar
9
True
True
0

I can walk and run
I can crawl
I can bark
I can roar
0
True
True
2

I can walk and run
I can crawl
I can bark
I can roar
2
I can walk and run
I can crawl
I can bark
I can roar
5
I can walk and run
I can crawl
I can bark
I can roar
6
I can walk and run
I can crawl
I can bark
I can roar
7
I can walk and run
I can crawl
I can bark
I can roar
8

I can walk and run
I can crawl
I can bark
I can roar
9
True
True
9
Abstract Base Class
subclass
0
Abstract Base Class
subclass
1
Abstract Base Class
subclass
2

I can walk and run
I can crawl
I can bark
I can roar
0
True
True
2

I can walk and run
I can crawl
I can bark
I can roar
0
Abstract Base Class
subclass
4

I can walk and run
I can crawl
I can bark
I can roar
9
True
True
9
Abstract Base Class
subclass
0
Can't instantiate abstract class parent with abstract methods geeks
child class
3
Abstract Base Class
subclass
2

I can walk and run
I can crawl
I can bark
I can roar
2
I can walk and run
I can crawl
I can bark
I can roar
5
I can walk and run
I can crawl
I can bark
I can roar
6
I can walk and run
I can crawl
I can bark
I can roar
7
I can walk and run
I can crawl
I can bark
I can roar
8

I can walk and run
I can crawl
I can bark
I can roar
2
I can walk and run
I can crawl
I can bark
I can roar
5
I can walk and run
I can crawl
I can bark
I can roar
6
I can walk and run
I can crawl
I can bark
I can roar
7
I can walk and run
I can crawl
I can bark
I can roar
8

I can walk and run
I can crawl
I can bark
I can roar
9
True
True
9
Abstract Base Class
subclass
0
Traceback [most recent call last]:
  File "/home/ffe4267d930f204512b7f501bb1bc489.py", line 19, in 
    c=Animal[]
TypeError: Can't instantiate abstract class Animal with abstract methods move
5
Abstract Base Class
subclass
2

I can walk and run
I can crawl
I can bark
I can roar
0
True
True
2

I can walk and run
I can crawl
I can bark
I can roar
2
I can walk and run
I can crawl
I can bark
I can roar
5
I can walk and run
I can crawl
I can bark
I can roar
6
I can walk and run
I can crawl
I can bark
I can roar
7
I can walk and run
I can crawl
I can bark
I can roar
8

I can walk and run
I can crawl
I can bark
I can roar
9
True
True
9
Abstract Base Class
subclass
0from7
Abstract Base Class
subclass
2

I can walk and run
I can crawl
I can bark
I can roar
0
True
True
2

abc 2

I can walk and run
I can crawl
I can bark
I can roar
0
Abstract Base Class
subclass
4

abc 6

I can walk and run
I can crawl
I can bark
I can roar
2
I can walk and run
I can crawl
I can bark
I can roar
5
I can walk and run
I can crawl
I can bark
I can roar
6
I can walk and run
I can crawl
I can bark
I can roar
7
I can walk and run
I can crawl
I can bark
I can roar
8

abc 2

I can walk and run
I can crawl
I can bark
I can roar
0
Can't instantiate abstract class parent with abstract methods geeks
child class
6

abc 6

I can walk and run
I can crawl
I can bark
I can roar
0
Traceback [most recent call last]:
  File "/home/ffe4267d930f204512b7f501bb1bc489.py", line 19, in 
    c=Animal[]
TypeError: Can't instantiate abstract class Animal with abstract methods move
8
 
 

I have 3 sides
I have 4 sides
I have 5 sides
I have 6 sides

from9abc 0 abc 1
Code 2: 

Python3

from abc import ABC, abstractmethod

I can walk and run
I can crawl
I can bark
I can roar
0
I can walk and run
I can crawl
I can bark
I can roar
1

I can walk and run
I can crawl
I can bark
I can roar
2
I can walk and run
I can crawl
I can bark
I can roar
5
I can walk and run
I can crawl
I can bark
I can roar
6
I can walk and run
I can crawl
I can bark
I can roar
7
I can walk and run
I can crawl
I can bark
I can roar
8

I can walk and run
I can crawl
I can bark
I can roar
9
True
True
0

I can walk and run
I can crawl
I can bark
I can roar
0
True
True
2

I can walk and run
I can crawl
I can bark
I can roar
2
I can walk and run
I can crawl
I can bark
I can roar
5
I can walk and run
I can crawl
I can bark
I can roar
6
I can walk and run
I can crawl
I can bark
I can roar
7
I can walk and run
I can crawl
I can bark
I can roar
8

I can walk and run
I can crawl
I can bark
I can roar
9
True
True
9
Abstract Base Class
subclass
0
I can walk and run
I can crawl
I can bark
I can roar
08
Abstract Base Class
subclass
2

I can walk and run
I can crawl
I can bark
I can roar
0
True
True
2

I can walk and run
I can crawl
I can bark
I can roar
2
I can walk and run
I can crawl
I can bark
I can roar
5
I can walk and run
I can crawl
I can bark
I can roar
6
I can walk and run
I can crawl
I can bark
I can roar
7
I can walk and run
I can crawl
I can bark
I can roar
8

I can walk and run
I can crawl
I can bark
I can roar
9
True
True
9
Abstract Base Class
subclass
0
I can walk and run
I can crawl
I can bark
I can roar
20
Abstract Base Class
subclass
2

I can walk and run
I can crawl
I can bark
I can roar
0
True
True
2

I can walk and run
I can crawl
I can bark
I can roar
2
I can walk and run
I can crawl
I can bark
I can roar
5
I can walk and run
I can crawl
I can bark
I can roar
6
I can walk and run
I can crawl
I can bark
I can roar
7
I can walk and run
I can crawl
I can bark
I can roar
8

I can walk and run
I can crawl
I can bark
I can roar
9
True
True
9
Abstract Base Class
subclass
0
I can walk and run
I can crawl
I can bark
I can roar
32
Abstract Base Class
subclass
2

I can walk and run
I can crawl
I can bark
I can roar
0
True
True
2

I can walk and run
I can crawl
I can bark
I can roar
2
I can walk and run
I can crawl
I can bark
I can roar
5
I can walk and run
I can crawl
I can bark
I can roar
6
I can walk and run
I can crawl
I can bark
I can roar
7
I can walk and run
I can crawl
I can bark
I can roar
8

I can walk and run
I can crawl
I can bark
I can roar
9
True
True
9
Abstract Base Class
subclass
0
I can walk and run
I can crawl
I can bark
I can roar
44
Abstract Base Class
subclass
2

I can walk and run
I can crawl
I can bark
I can roar
0
True
True
2

I can walk and run
I can crawl
I can bark
I can roar
49

I can walk and run
I can crawl
I can bark
I can roar
0
Abstract Base Class
subclass
4

I can walk and run
I can crawl
I can bark
I can roar
53

I can walk and run
I can crawl
I can bark
I can roar
2
I can walk and run
I can crawl
I can bark
I can roar
5
I can walk and run
I can crawl
I can bark
I can roar
6
I can walk and run
I can crawl
I can bark
I can roar
7
I can walk and run
I can crawl
I can bark
I can roar
8

I can walk and run
I can crawl
I can bark
I can roar
49

I can walk and run
I can crawl
I can bark
I can roar
0
Can't instantiate abstract class parent with abstract methods geeks
child class
6

I can walk and run
I can crawl
I can bark
I can roar
53

Output:   
 

I can walk and run
I can crawl
I can bark
I can roar

I can walk and run
I can crawl
I can bark
I can roar
0
Traceback [most recent call last]:
  File "/home/ffe4267d930f204512b7f501bb1bc489.py", line 19, in 
    c=Animal[]
TypeError: Can't instantiate abstract class Animal with abstract methods move
8
Implementation Through Subclassing : 
By subclassing directly from the base, we can avoid the need to register the class explicitly. In this case, the Python class management is used to recognize PluginImplementation as implementing the abstract PluginBase. 
 

Python3

from9abc 0 abc 1

abc 3abc 0 abc 5

from9abc 0 abc 9

I can walk and run
I can crawl
I can bark
I can roar
9
True
True
0

abc 3abc 0 import3

from9abc 0 abc 9

I can walk and run
I can crawl
I can bark
I can roar
9
True
True
9
Abstract Base Class
subclass
0
I can walk and run
I can crawl
I can bark
I can roar
83
Abstract Base Class
subclass
2

True
True
9
I can walk and run
I can crawl
I can bark
I can roar
86
I can walk and run
I can crawl
I can bark
I can roar
87
I can walk and run
I can crawl
I can bark
I can roar
88

True
True
9
I can walk and run
I can crawl
I can bark
I can roar
86
I can walk and run
I can crawl
I can bark
I can roar
91
I can walk and run
I can crawl
I can bark
I can roar
92

Output:   
 

True
True

abc 3abc 0 import3
  
Concrete Methods in Abstract Base Classes : 
Concrete classes contain only concrete [normal]methods whereas abstract classes may contain both concrete methods and abstract methods. The concrete class provides an implementation of abstract methods, the abstract base class can also provide an implementation by invoking the methods via super[]. 
 

Đầu ra: & nbsp; & nbsp;

Python3

from9abc 0 abc 1

from abc import ABC, abstractmethod

I can walk and run
I can crawl
I can bark
I can roar
0
True
True
00

I can walk and run
I can crawl
I can bark
I can roar
2
I can walk and run
I can crawl
I can bark
I can roar
5
True
True
03
I can walk and run
I can crawl
I can bark
I can roar
7
I can walk and run
I can crawl
I can bark
I can roar
8

I can walk and run
I can crawl
I can bark
I can roar
9
True
True
9
Abstract Base Class
subclass
0
True
True
09
Abstract Base Class
subclass
2

I can walk and run
I can crawl
I can bark
I can roar
0
True
True
12

I can walk and run
I can crawl
I can bark
I can roar
2
I can walk and run
I can crawl
I can bark
I can roar
5
True
True
03
I can walk and run
I can crawl
I can bark
I can roar
7
I can walk and run
I can crawl
I can bark
I can roar
8

I can walk and run
I can crawl
I can bark
I can roar
9
True
True
19
True
True
20

I can walk and run
I can crawl
I can bark
I can roar
9
True
True
9
Abstract Base Class
subclass
0
True
True
24
Abstract Base Class
subclass
2

I can walk and run
I can crawl
I can bark
I can roar
0
True
True
12

True
True
29

Output:   
 

Abstract Base Class
subclass

True
True
26abc 0
True
True
28
  
Abstract Properties : 
Abstract classes include attributes in addition to methods, you can require the attributes in concrete classes by defining them with @abstractproperty. 
 

Python3

Trong chương trình trên, chúng ta có thể gọi các phương thức trong các lớp trừu tượng bằng cách sử dụng Super []. & NBSP; & nbsp; & nbsp; thuộc tính trừu tượng: & nbsp; các lớp trừu tượng bao gồm các thuộc tính ngoài các phương thức, bạn có thể yêu cầu các thuộc tính trong các lớp cụ thể bằng cách xác định chúng với @Tóm tắtProperty. & NBSP; & NBSP;

import

I can walk and run
I can crawl
I can bark
I can roar
63

from abc import ABC, abstractmethod

I can walk and run
I can crawl
I can bark
I can roar
2
True
True
39
True
True
40

I can walk and run
I can crawl
I can bark
I can roar
0
True
True
37

I can walk and run
I can crawl
I can bark
I can roar
2
I can walk and run
I can crawl
I can bark
I can roar
5
I can walk and run
I can crawl
I can bark
I can roar
68
I can walk and run
I can crawl
I can bark
I can roar
7
I can walk and run
I can crawl
I can bark
I can roar
8

I can walk and run
I can crawl
I can bark
I can roar
9
True
True
47
True
True
48

I can walk and run
I can crawl
I can bark
I can roar
2
True
True
52

I can walk and run
I can crawl
I can bark
I can roar
0
True
True
37

I can walk and run
I can crawl
I can bark
I can roar
2
I can walk and run
I can crawl
I can bark
I can roar
5
I can walk and run
I can crawl
I can bark
I can roar
68
I can walk and run
I can crawl
I can bark
I can roar
7
I can walk and run
I can crawl
I can bark
I can roar
8

True
True
61
True
True
62

I can walk and run
I can crawl
I can bark
I can roar
2
True
True
26abc 0
True
True
66

I can walk and run
I can crawl
I can bark
I can roar
2
True
True
9
True
True
69

I can walk and run
I can crawl
I can bark
I can roar
9
True
True
47
True
True
48

I can walk and run
I can crawl
I can bark
I can roar
0
I can walk and run
I can crawl
I can bark
I can roar
74

I can walk and run
I can crawl
I can bark
I can roar
9
True
True
47
I can walk and run
I can crawl
I can bark
I can roar
83

True
True
70
True
True
71

Output:   
 

Can't instantiate abstract class parent with abstract methods geeks
child class

I can walk and run
I can crawl
I can bark
I can roar
2
True
True
9
True
True
74
  
Abstract Class Instantiation : 
Abstract classes are incomplete because they have methods that have nobody. If python allows creating an object for abstract classes then using that object if anyone calls the abstract method, but there is no actual implementation to invoke. So we use an abstract class as a template and according to the need, we extend it and build on it before we can use it. Due to the fact, an abstract class is not a concrete class, it cannot be instantiated. When we create an object for the abstract class it raises an error. 
 

Python3

True
True
26abc 0
True
True
77

True
True
9
True
True
79

I can walk and run
I can crawl
I can bark
I can roar
2
I can walk and run
I can crawl
I can bark
I can roar
3

Trong ví dụ trên, lớp cơ sở không thể được khởi tạo vì nó chỉ có phiên bản trừu tượng của phương thức getter thuộc tính. Nếu Python cho phép tạo một đối tượng cho các lớp trừu tượng thì sử dụng đối tượng đó nếu bất kỳ ai gọi phương thức trừu tượng, nhưng không có triển khai thực tế để gọi. Vì vậy, chúng tôi sử dụng một lớp trừu tượng làm mẫu và theo nhu cầu, chúng tôi mở rộng nó và xây dựng nó trước khi chúng tôi có thể sử dụng nó. Do thực tế, một lớp trừu tượng không phải là một lớp cụ thể, nó không thể được khởi tạo. Khi chúng ta tạo một đối tượng cho lớp trừu tượng, nó sẽ gây ra lỗi. & Nbsp; & nbsp;

I can walk and run
I can crawl
I can bark
I can roar
9
True
True
0

from abc import

True
True
83

Trong ví dụ trên, lớp cơ sở không thể được khởi tạo vì nó chỉ có phiên bản trừu tượng của phương thức getter thuộc tính. Nếu Python cho phép tạo một đối tượng cho các lớp trừu tượng thì sử dụng đối tượng đó nếu bất kỳ ai gọi phương thức trừu tượng, nhưng không có triển khai thực tế để gọi. Vì vậy, chúng tôi sử dụng một lớp trừu tượng làm mẫu và theo nhu cầu, chúng tôi mở rộng nó và xây dựng nó trước khi chúng tôi có thể sử dụng nó. Do thực tế, một lớp trừu tượng không phải là một lớp cụ thể, nó không thể được khởi tạo. Khi chúng ta tạo một đối tượng cho lớp trừu tượng, nó sẽ gây ra lỗi. & Nbsp; & nbsp;

I can walk and run
I can crawl
I can bark
I can roar
9
True
True
9
Abstract Base Class
subclass
0
I can walk and run
I can crawl
I can bark
I can roar
08
Abstract Base Class
subclass
2

from abc import

True
True
83

Trong ví dụ trên, lớp cơ sở không thể được khởi tạo vì nó chỉ có phiên bản trừu tượng của phương thức getter thuộc tính. Nếu Python cho phép tạo một đối tượng cho các lớp trừu tượng thì sử dụng đối tượng đó nếu bất kỳ ai gọi phương thức trừu tượng, nhưng không có triển khai thực tế để gọi. Vì vậy, chúng tôi sử dụng một lớp trừu tượng làm mẫu và theo nhu cầu, chúng tôi mở rộng nó và xây dựng nó trước khi chúng tôi có thể sử dụng nó. Do thực tế, một lớp trừu tượng không phải là một lớp cụ thể, nó không thể được khởi tạo. Khi chúng ta tạo một đối tượng cho lớp trừu tượng, nó sẽ gây ra lỗi. & Nbsp; & nbsp;

I can walk and run
I can crawl
I can bark
I can roar
9
True
True
9
Abstract Base Class
subclass
0
I can walk and run
I can crawl
I can bark
I can roar
20
Abstract Base Class
subclass
2

from abc import

True
True
83

Trong ví dụ trên, lớp cơ sở không thể được khởi tạo vì nó chỉ có phiên bản trừu tượng của phương thức getter thuộc tính. Nếu Python cho phép tạo một đối tượng cho các lớp trừu tượng thì sử dụng đối tượng đó nếu bất kỳ ai gọi phương thức trừu tượng, nhưng không có triển khai thực tế để gọi. Vì vậy, chúng tôi sử dụng một lớp trừu tượng làm mẫu và theo nhu cầu, chúng tôi mở rộng nó và xây dựng nó trước khi chúng tôi có thể sử dụng nó. Do thực tế, một lớp trừu tượng không phải là một lớp cụ thể, nó không thể được khởi tạo. Khi chúng ta tạo một đối tượng cho lớp trừu tượng, nó sẽ gây ra lỗi. & Nbsp; & nbsp;

I can walk and run
I can crawl
I can bark
I can roar
9
True
True
9
Abstract Base Class
subclass
0
I can walk and run
I can crawl
I can bark
I can roar
32
Abstract Base Class
subclass
2

from abc import

True
True
83

Trong ví dụ trên, lớp cơ sở không thể được khởi tạo vì nó chỉ có phiên bản trừu tượng của phương thức getter thuộc tính. Nếu Python cho phép tạo một đối tượng cho các lớp trừu tượng thì sử dụng đối tượng đó nếu bất kỳ ai gọi phương thức trừu tượng, nhưng không có triển khai thực tế để gọi. Vì vậy, chúng tôi sử dụng một lớp trừu tượng làm mẫu và theo nhu cầu, chúng tôi mở rộng nó và xây dựng nó trước khi chúng tôi có thể sử dụng nó. Do thực tế, một lớp trừu tượng không phải là một lớp cụ thể, nó không thể được khởi tạo. Khi chúng ta tạo một đối tượng cho lớp trừu tượng, nó sẽ gây ra lỗi. & Nbsp; & nbsp;

I can walk and run
I can crawl
I can bark
I can roar
9
True
True
9
Abstract Base Class
subclass
0
I can walk and run
I can crawl
I can bark
I can roar
44
Abstract Base Class
subclass
2

Abstract Base Class
subclass
43abc 0
Abstract Base Class
subclass
45

Output:   
 

Traceback [most recent call last]:
  File "/home/ffe4267d930f204512b7f501bb1bc489.py", line 19, in 
    c=Animal[]
TypeError: Can't instantiate abstract class Animal with abstract methods move

Là một lớp trừu tượng cụ thể?

Lớp Aabstract có thể có cả một phương pháp trừu tượng cũng như cụ thể. Một lớp cụ thể chỉ có thể có các phương pháp cụ thể. Ngay cả một phương pháp trừu tượng duy nhất làm cho lớp trừu tượng. Abstract class can have both an abstract as well as concrete methods. A concrete class can only have concrete methods. Even a single abstract method makes the class abstract.

Lớp trừu tượng có thể có phương pháp cụ thể Python không?

Các lớp trừu tượng cũng có thể chứa các phương pháp cụ thể có việc thực hiện phương pháp và có thể được sử dụng bởi tất cả các lớp cụ thể.Để xác định một phương pháp cụ thể trong một lớp trừu tượng, chúng tôi chỉ cần xác định một phương thức với việc thực hiện và không trang trí nó với bộ trang trí @abstractmethod. that have the implementation of the method and can be used by all the concrete classes. To define a concrete method in an abstract class, we simply define a method with implementation and don't decorate it with the @abstractmethod decorator.

Một lớp trừu tượng trong Python là gì?

Các lớp trừu tượng là các lớp chứa một hoặc nhiều phương thức trừu tượng.Một phương pháp trừu tượng là một phương pháp được khai báo, nhưng không chứa việc thực hiện.Các lớp trừu tượng không thể được khởi tạo và yêu cầu các lớp con để cung cấp triển khai cho các phương thức trừu tượng.classes that contain one or more abstract methods. An abstract method is a method that is declared, but contains no implementation. Abstract classes cannot be instantiated, and require subclasses to provide implementations for the abstract methods.

Sự khác biệt giữa phương pháp trừu tượng và phương pháp cụ thể trong Python là gì?

Các phương pháp trừu tượng chỉ được xác định trong lớp siêu lớp/cha mẹ [lớp trừu tượng] nhưng không có cơ thể.Một phương pháp không trừu tượng, tức là nếu một định nghĩa phương thức được đưa ra trong cùng một lớp, nó được khai báo được gọi là bê tông.Các lớp trừu tượng có thể chứa các phương thức trừu tượng, nhưng các lớp cụ thể không thể.. A method which is not abstract i.e. if a methods definition is given in the same class its declared is called concrete. Abstract classes may contain abstract methods, but concrete classes can't.

Bài Viết Liên Quan

Chủ Đề