Hướng dẫn abstract method in python w3schools - phương thức trừu tượng trong python w3schools

Các lớp và đối tượng PythonClasses and Objects


Các lớp/đối tượng Python

Python là một ngôn ngữ lập trình định hướng đối tượng.

Hầu hết mọi thứ trong Python là một đối tượng, với các thuộc tính và phương pháp của nó.

Một lớp giống như một hàm tạo đối tượng hoặc "bản thiết kế" để tạo các đối tượng.


Tạo một lớp học

Để tạo một lớp, hãy sử dụng từ khóa class:

Thí dụ

Tạo một lớp có tên MyClass, với một thuộc tính có tên X:

lớp MyClass: & nbsp; x = 5
  x = 5

Hãy tự mình thử »


Tạo đối tượng

Bây giờ chúng ta có thể sử dụng lớp có tên MyClass để tạo đối tượng:

Thí dụ

Tạo một lớp có tên MyClass, với một thuộc tính có tên X:

lớp MyClass: & nbsp; x = 5
print(p1.x)

Hãy tự mình thử »


Tạo đối tượng

Bây giờ chúng ta có thể sử dụng lớp có tên MyClass để tạo đối tượng:

Tạo một đối tượng có tên P1 và in giá trị của X:

p1 = myClass () in (p1.x)

Hàm __init __ ()

Thí dụ

Tạo một lớp có tên MyClass, với một thuộc tính có tên X:

lớp MyClass: & nbsp; x = 5
  def __init__(self, name, age):
    self.name = name
    self.age = age

Hãy tự mình thử »

Tạo đối tượng
print(p1.age)

Hãy tự mình thử »

Tạo đối tượng The __init__() function is called automatically every time the class is being used to create a new object.



Bây giờ chúng ta có thể sử dụng lớp có tên MyClass để tạo đối tượng:

Tạo một đối tượng có tên P1 và in giá trị của X:

p1 = myClass () in (p1.x)

Thí dụ

Tạo một lớp có tên MyClass, với một thuộc tính có tên X:

lớp MyClass: & nbsp; x = 5
  def __init__(self, name, age):
    self.name = name
    self.age = age

Hãy tự mình thử »

Tạo đối tượng

Hãy tự mình thử »

Thí dụ

Tạo một lớp có tên MyClass, với một thuộc tính có tên X:

lớp MyClass: & nbsp; x = 5
  def __init__(self, name, age):
    self.name = name
    self.age = age

Hãy tự mình thử »
    return f"{self.name}({self.age})"

Tạo đối tượng

Tạo đối tượng

Hãy tự mình thử »


Tạo đối tượng

Bây giờ chúng ta có thể sử dụng lớp có tên MyClass để tạo đối tượng:

Tạo một đối tượng có tên P1 và in giá trị của X:

Thí dụ

Tạo một lớp có tên MyClass, với một thuộc tính có tên X:

lớp MyClass: & nbsp; x = 5
  def __init__(self, name, age):
    self.name = name
    self.age = age

Hãy tự mình thử »
    print("Hello my name is " + self.name)

Tạo đối tượng
p1.myfunc()

Hãy tự mình thử »

Tạo đối tượng The self parameter is a reference to the current instance of the class, and is used to access variables that belong to the class.


Bây giờ chúng ta có thể sử dụng lớp có tên MyClass để tạo đối tượng:

Tạo một đối tượng có tên P1 và in giá trị của X:

p1 = myClass () in (p1.x)

Thí dụ

Tạo một lớp có tên MyClass, với một thuộc tính có tên X:

lớp MyClass: & nbsp; x = 5
  def __init__(mysillyobject, name, age):
    mysillyobject.name = name
    mysillyobject.age = age

Hãy tự mình thử »
    print("Hello my name is " + abc.name)

Tạo đối tượng
p1.myfunc()

Bây giờ chúng ta có thể sử dụng lớp có tên MyClass để tạo đối tượng:


Tạo một đối tượng có tên P1 và in giá trị của X:

p1 = myClass () in (p1.x)


Hàm __init __ ()

Các ví dụ trên là các lớp và đối tượng ở dạng đơn giản nhất của chúng và không thực sự hữu ích trong các ứng dụng thực tế.


Để hiểu ý nghĩa của các lớp, chúng ta phải hiểu hàm __init __ () tích hợp.

Tất cả các lớp có một hàm gọi là __init __ (), luôn được thực thi khi lớp được bắt đầu.


Sử dụng hàm __init __ () để gán các giá trị cho các thuộc tính đối tượng hoặc các hoạt động khác cần thiết để thực hiện khi đối tượng được tạo:

Tạo một lớp có tên là người, sử dụng hàm __init __ () để gán các giá trị cho tên và tuổi:


người lớp: & nbsp; def __init __ (tự, tên, tuổi): & nbsp; & nbsp; & nbsp; self.name = name & nbsp; & nbsp; & nbsp; tự.age = tuổi



Chúng ta hãy xem xét một ví dụ khác trong đó phương pháp trừu tượng có một đối số và lớp con có hai đối số tùy chọn không được xác định trong phương pháp trừu tượng của cha mẹ:

lớp ChildLass mở rộng ParentClass {& nbsp; // lớp con có thể xác định các đối số tùy chọn không nằm trong phương thức trừu tượng của cha mẹ & nbsp; hàm công khai prefixName ($ name, $ sleelator = ".", $ greet = "dEg") if ($ name == "John Doe") {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ prefix = "mr"; & nbsp; & nbsp; & nbsp; } otherif ($ name == "jane doe") {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ prefix = "mrs"; & nbsp; & nbsp; & nbsp; } other {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ prefix = ""; & nbsp; & nbsp; & nbsp; } & nbsp; & nbsp; & nbsp; return "{$ greet} {$ prefix} {$ slearator} {$ name}"; & nbsp; }}

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

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 có thể không được khởi tạo và các phương pháp trừu tượng của nó phải được thực hiện bởi các lớp con của nó.

Phương pháp trừu tượng là gì?

Một phương thức được tuyên bố bằng cách sử dụng từ khóa trừu tượng trong một lớp trừu tượng và không có định nghĩa (thực hiện) được gọi là một phương thức trừu tượng. Khi chúng ta chỉ cần khai báo phương pháp trong một siêu lớp, nó có thể đạt được bằng cách khai báo các phương pháp là tóm tắt.
abstract class ParentClass {
  abstract public function someMethod1();
  abstract public function someMethod2($name, $color);
  abstract public function someMethod3() : string;
}
?>

Tại sao chúng ta sử dụng phương pháp trừu tượng trong Python?

Vì vậy, khi một lớp trẻ được kế thừa từ một lớp trừu tượng, chúng ta có các quy tắc sau:

  • Phương pháp lớp con phải được xác định cùng tên và nó được phân chia lại phương thức trừu tượng của cha mẹ
  • Phương pháp lớp con phải được xác định với cùng hoặc một công cụ sửa đổi truy cập ít bị hạn chế
  • Số lượng các đối số cần thiết phải giống nhau. Tuy nhiên, lớp trẻ có thể có các đối số tùy chọn ngoài ra

Hãy xem xét một ví dụ:

Thí dụ

Tên = $ name; & nbsp; } & nbsp; Tóm tắt chức năng công cộng giới thiệu (): Chuỗi; }
// Parent class
abstract class Car {
  public $name;
  public function __construct($name) {
    $this->name = $name;
  }
  abstract public function intro() : string;
}

// lớp trẻ Audi mở rộng xe {& nbsp; hàm công khai intro (): chuỗi {& nbsp; & nbsp; & nbsp; Trả lại "Chọn chất lượng Đức! Tôi là một tên $ this->!"; & nbsp; }}
class Audi extends Car {
  public function intro() : string {
    return "Choose German quality! I'm an $this->name!";
  }
}

lớp Volvo mở rộng xe {& nbsp; hàm công khai intro (): chuỗi {& nbsp; & nbsp; & nbsp; Trả lại "Tự hào là người Thụy Điển! Tôi là một tên $ this->!"; & nbsp; }}
  public function intro() : string {
    return "Proud to be Swedish! I'm a $this->name!";
  }
}

lớp citroen mở rộng xe {& nbsp; hàm công khai intro (): chuỗi {& nbsp; & nbsp; & nbsp; Trả lại "Sự ngông cuồng của Pháp! Tôi là một tên $ this->!"; & nbsp; }}
  public function intro() : string {
    return "French extravagance! I'm a $this->name!";
  }
}

// tạo các đối tượng từ các lớp con $ audi = new Audi ("audi"); echo $ audi-> intro (); echo "";
$audi = new audi("Audi");
echo $audi->intro();
echo "
";

$ volvo = new Volvo ("Volvo"); echo $ volvo-> intro (); echo "";
echo $volvo->intro();
echo "
";

$ citroen = new Citroen ("citroen"); echo $ citroen-> intro ();?>
echo $citroen->intro();
?>

Hãy tự mình thử »

Ví dụ giải thích

Các lớp Audi, Volvo và Citroen được kế thừa từ lớp xe hơi. Điều này có nghĩa là các lớp Audi, Volvo và Citroen có thể sử dụng thuộc tính tên $ công khai cũng như phương thức __construct () công khai từ lớp xe vì kế thừa.

Nhưng, intro () là một phương thức trừu tượng nên được xác định trong tất cả các lớp con và chúng nên trả về một chuỗi.



PHP - Ví dụ về lớp trừu tượng hơn

Hãy xem xét một ví dụ khác trong đó phương pháp trừu tượng có một đối số:

Thí dụ

Tên = $ name; & nbsp; } & nbsp; Tóm tắt chức năng công cộng giới thiệu (): Chuỗi; }
abstract class ParentClass {
  // Abstract method with an argument
  abstract protected function prefixName($name);
}

// lớp trẻ Audi mở rộng xe {& nbsp; hàm công khai intro (): chuỗi {& nbsp; & nbsp; & nbsp; Trả lại "Chọn chất lượng Đức! Tôi là một tên $ this->!"; & nbsp; }}
  public function prefixName($name) {
    if ($name == "John Doe") {
      $prefix = "Mr.";
    } elseif ($name == "Jane Doe") {
      $prefix = "Mrs.";
    } else {
      $prefix = "";
    }
    return "{$prefix} {$name}";
  }
}

lớp Volvo mở rộng xe {& nbsp; hàm công khai intro (): chuỗi {& nbsp; & nbsp; & nbsp; Trả lại "Tự hào là người Thụy Điển! Tôi là một tên $ this->!"; & nbsp; }}
echo $class->prefixName("John Doe");
echo "
";
echo $class->prefixName("Jane Doe");
?>

Hãy tự mình thử »

Ví dụ giải thích

Thí dụ

Tên = $ name; & nbsp; } & nbsp; Tóm tắt chức năng công cộng giới thiệu (): Chuỗi; }
abstract class ParentClass {
  // Abstract method with an argument
  abstract protected function prefixName($name);
}

// lớp trẻ Audi mở rộng xe {& nbsp; hàm công khai intro (): chuỗi {& nbsp; & nbsp; & nbsp; Trả lại "Chọn chất lượng Đức! Tôi là một tên $ this->!"; & nbsp; }}
  // The child class may define optional arguments that are not in the parent's abstract method
  public function prefixName($name, $separator = ".", $greet = "Dear") {
    if ($name == "John Doe") {
      $prefix = "Mr";
    } elseif ($name == "Jane Doe") {
      $prefix = "Mrs";
    } else {
      $prefix = "";
    }
    return "{$greet} {$prefix}{$separator} {$name}";
  }
}

lớp Volvo mở rộng xe {& nbsp; hàm công khai intro (): chuỗi {& nbsp; & nbsp; & nbsp; Trả lại "Tự hào là người Thụy Điển! Tôi là một tên $ this->!"; & nbsp; }}
echo $class->prefixName("John Doe");
echo "
";
echo $class->prefixName("Jane Doe");
?>

Hãy tự mình thử »



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

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 có thể không được khởi tạo và các phương pháp trừu tượng của nó phải được thực hiện bởi các lớp con của nó.a method that is declared, but contains no implementation. Abstract classes may not be instantiated, and its abstract methods must be implemented by its subclasses.

Phương pháp trừu tượng là gì?

Một phương thức được tuyên bố bằng cách sử dụng từ khóa trừu tượng trong một lớp trừu tượng và không có định nghĩa (thực hiện) được gọi là một phương thức trừu tượng.Khi chúng ta chỉ cần khai báo phương pháp trong một siêu lớp, nó có thể đạt được bằng cách khai báo các phương pháp là tóm tắt. is called an abstract method. When we need just the method declaration in a super class, it can be achieved by declaring the methods as abstracts.

Tại sao chúng ta sử dụng phương pháp trừu tượng trong Python?

Mục đích của nó là xác định làm thế nào các lớp khác sẽ trông như thế nào, tức là những phương pháp và thuộc tính nào họ dự kiến sẽ có.Các phương thức và thuộc tính được xác định (nhưng không được thực hiện) trong một lớp trừu tượng được gọi là các phương thức trừu tượng và các thuộc tính trừu tượng.to define how other classes should look like, i.e. what methods and properties they are expected to have. The methods and properties defined (but not implemented) in an abstract class are called abstract methods and abstract properties.

Sự trừu tượng trong Python W3Schools là gì?

Sự trừu tượng trong Python là quá trình che giấu việc triển khai thực sự của một ứng dụng từ người dùng và chỉ nhấn mạnh vào việc sử dụng nó.the process of hiding the real implementation of an application from the user and emphasizing only on usage of it.