Tôi chưa quen với python nhưng tôi biết một chút về php. Đây là một mã trong php
tạo trình thiết lập toàn cầu và trình thu thập toàn cầu cho cả thuộc tính tĩnh và
dynamic properties my question is :
python có đủ mạnh để tạo tính năng tương tự bằng cách sử dụng đối tượng
được định hướng trong đó không nếu câu trả lời là có. Ai đó có thể cho tôi ví dụ về
code the do the same thing as this full working example????????????
cảm ơn trước
đây là mã
$line="
\n";
lớp Người
{ // class person start
var $name, $age;
static $salary;
function __construct[$name, $age,$salary]
{ //construct start
$this->set[ "name",$name];
$this->set[ "age",$age];
self::sset["salary",$salary];
} // kết thúc cấu trúc
bộ chức năng[$property,$value]
{// bộ khởi động
$this->$property=$value;
}//setter end
function get[$property]
{//getter start
return $this->$property;
}//getter end
function sset[$property, $value]
{//static setter start
self. $$property=$value;
}// kết thúc bộ định vị tĩnh
function sget[$property]
{//static getter start
return self. $$property;
}//kết thúc bộ thu tĩnh
} // lớp người kết thúc
$x=Người mới["ghét",35,10000];
$y=Người mới["atif",40,12000];
// in giá trị x
echo "x. Tên. ". $x->get["tên"]. $line;
echo "x. lứa tuổi. ". $x->get["tuổi"]. $line;
echo "x. lương. ". $x->sget["lương"]. $dòng;
//in giá trị y
echo "y. Tên. ". $y->get["tên"]. $line;
echo "y. lứa tuổi. ". $y->get["tuổi"]. $line;
echo "y. lương. ". $y->sget["lương"]. $line;
?>
Getters và setters trong Python khác với trong các ngôn ngữ OOP khác. Công dụng chính của getters và setters là đảm bảo đóng gói dữ liệu trong các chương trình hướng đối tượng. Trái ngược với các ngôn ngữ hướng đối tượng khác, biến private trong Python không phải là trường ẩn. Một số ngôn ngữ OOP sử dụng các phương thức của getters và setter để đóng gói dữ liệu. Chúng tôi muốn che giấu các thuộc tính của một lớp đối tượng khỏi các lớp khác để các phương thức trong các lớp khác không vô tình sửa đổi dữ liệu
Trong các ngôn ngữ OOP, getters và setters được sử dụng để truy xuất và cập nhật dữ liệu. Một getter truy xuất giá trị thuộc tính hiện tại của một đối tượng, trong khi một setter thay đổi giá trị thuộc tính của một đối tượng. Trong bài viết này, chúng ta sẽ thảo luận về getter và setter trong Python với các ví dụ
Getter trong Python là gì?
Getters là các phương thức được sử dụng trong Lập trình hướng đối tượng [OOPS] để truy cập các thuộc tính riêng của lớp. Hàm setattr[] trong Python tương ứng với hàm getattr[] trong Python. Nó làm thay đổi giá trị thuộc tính của đối tượng
Setter trong Python là gì?
setter là một phương thức được sử dụng để thiết lập giá trị của thuộc tính. Nó rất hữu ích trong lập trình hướng đối tượng để đặt giá trị của các thuộc tính riêng tư trong một lớp
Nói chung, getters và setters chủ yếu được sử dụng để đảm bảo đóng gói dữ liệu trong OOP
Sử dụng chức năng bình thường để đạt được hành vi getters và setter
Sẽ không có triển khai đặc biệt nào nếu chúng ta chỉ định các phương thức get[] và set[] bình thường để đạt được thuộc tính getters & setters
Ví dụ
Hãy lấy một ví dụ để hiểu cách chúng ta có thể sử dụng hàm bình thường để đạt được hàm getters và setter
đầu ra. Sau khi thực thi đoạn mã trên, chúng ta sẽ nhận được đầu ra như hình dưới đây
đầu ra là
Giải trình
Để đạt được chức năng như vậy, các hàm get age[] và set age[] trong đoạn mã trên hoạt động như các hàm tiêu chuẩn không ảnh hưởng đến getters và setters. Python có một thuộc tính hàm duy nhất []
Sử dụng hàm property[] để đạt được hành vi getters và setter
Trong Python, property[] là một hàm tích hợp để tạo và trả về một đối tượng thuộc tính. Có ba phương thức trên một đối tượng thuộc tính. getter[], setter[] và xóa[]. Trong Python, hàm property[] nhận bốn đối số. thuộc tính [fget, fset, fdel, doc]. Hàm fget được sử dụng để truy xuất giá trị thuộc tính. Hàm fset được sử dụng để đặt giá trị của một thuộc tính. Hàm fdel dùng để xóa giá trị của một thuộc tính. Thuộc tính được cung cấp một chuỗi tài liệu bởi doc
Ví dụ
Hãy lấy một ví dụ để hiểu cách chúng ta có thể sử dụng hàm property[] để đạt được hành vi của getters và setters
đầu ra. Sau khi thực thi đoạn mã trên, chúng ta sẽ nhận được đầu ra như hình dưới đây
đầu ra là
setter method getter method 18
Giải trình
Trong chương trình trên, chỉ có một lệnh in duy nhất. Đầu ra bao gồm ba dòng do phương thức setter set age[] được gọi và phương thức getter get age[] được gọi. Do đó, tuổi là một đối tượng thuộc tính hỗ trợ bảo mật truy cập biến riêng tư
Sử dụng trình trang trí @property để đạt được hành vi getters và setter
Chúng ta đã sử dụng hàm property[] trong phương thức trước đó để đạt được hành vi của getters và setters. Tuy nhiên, như đã đề cập trước đó trong bài viết này, getters và setters cũng được sử dụng để xác thực việc nhận và đặt giá trị thuộc tính. Một phương pháp khác để thực thi chức năng thuộc tính là sử dụng một trình trang trí. @property là một trong những công cụ trang trí tích hợp sẵn của Python. Mục tiêu chính của bất kỳ trình trang trí nào là sửa đổi các phương thức hoặc thuộc tính của lớp để người dùng lớp không cần thay đổi mã của họ
Ví dụ
Hãy lấy một ví dụ để hiểu cách chúng ta có thể sử dụng @property decorators để đạt được hành vi getters và setter
đầu ra. Sau khi thực thi đoạn mã trên, chúng ta sẽ nhận được đầu ra như hình bên dưới
đầu ra là
setter method called getter method called 25
Giải trình
Đoạn mã trước giải thích cách sử dụng trình trang trí @property để xây dựng các trình khởi tạo và trình khởi chạy pythonic. Ví dụ trên đóng vai trò là mã xác thực, tăng ValueError nếu chúng tôi cố gắng khởi tạo tuổi với giá trị nhỏ hơn 20
Làm cho các thuộc tính riêng tư
Bây giờ, chúng ta sẽ xem cách hiển thị các phương thức ở chế độ riêng tư để các hàm gọi bên ngoài không thể thao tác các biến bên trong chúng. Chúng chỉ có thể được thao tác bởi các hàm được định nghĩa trong lớp. Chúng được đặt ở chế độ riêng tư bằng cách đặt trước chúng hai dấu gạch dưới
Ví dụ
Hãy lấy một ví dụ để hiểu làm thế nào chúng ta có thể đặt các thuộc tính riêng tư trong chương trình
đầu ra. Sau khi thực thi đoạn mã trên, chúng ta sẽ nhận được đầu ra như hình dưới đây
Đọc các giá trị từ các phương thức riêng tư
Để đọc giá trị từ các phương thức riêng tư, chúng ta phải sử dụng phương thức getter. Nếu không sử dụng phương thức getter, chúng ta không thể sử dụng phương thức thuộc tính để truy cập các giá trị thuộc tính riêng tư. Hãy lấy một ví dụ để hiểu phương pháp này
Ví dụ
đầu ra. Sau khi thực thi đoạn mã trên, chúng ta sẽ nhận được đầu ra như hình dưới đây
đầu ra là
Ví dụ
Hãy lấy một ví dụ khác để tạo một lớp với các thuộc tính. Từ lớp đó, chúng tôi có thể một số đối tượng
Thuộc tính [Emp] không được đặt trên các đối tượng này. Chúng tôi có thể đặt nó trực tiếp, nhưng đó không phải là một phương pháp tốt. Chúng tôi xây dựng hai phương pháp thay vì. getEmp[] và setEmp[]