dưới đây là cách triển khai đơn giản của mẫu khách truy cập trong C++. Ist nó có thể thực hiện một cái gì đó như thế này trong Python?Mẫu khách truy cập trong python
Tôi cần nó, bởi vì tôi sẽ chuyển đối tượng từ mã C++ vào một hàm bằng Python. Ý tưởng của tôi là triển khai một khách truy cập bằng Python để tìm ra loại Object.
My C++:
#include <iostream>
#include <string>
class t_element_base
{
public:
virtual void accept(class t_visitor &v) = 0;
};
class t_element_deriv_one: public t_element_base
{
public:
void accept(t_visitor &v);
std::string t_element_deriv_one_text()
{
return "t_element_deriv_one";
}
};
class t_element_deriv_two: public t_element_base
{
public:
void accept(t_visitor &v);
std::string t_element_deriv_two_text()
{
return "t_element_deriv_one";
}
};
class t_visitor
{
public:
void visit(t_element_deriv_one& e){ std::cout << e.t_element_deriv_one_text() << std::endl; }
void visit(t_element_deriv_two& e){ std::cout << e.t_element_deriv_two_text() << std::endl; }
};
void t_element_deriv_one::accept(t_visitor &v)
{
v.visit(*this);
}
void t_element_deriv_two::accept(t_visitor &v)
{
v.visit(*this);
}
int
main
(
void
)
{
t_element_base* list[] =
{
new t_element_deriv_one(), new t_element_deriv_two()
};
t_visitor visitor;
for(int i = 0; i < 2; i++)
list[ i ]->accept(visitor);
}
Cảm ơn sự giúp đỡ của bạn. – bogdan
Không biết phiên bản Python nào bạn sử dụng, nhưng trong phiên bản 2.7.6, cuộc gọi 'instance' không tồn tại. Bạn nên sử dụng 'isinstance' – Matthias
@Matthias - tốt bắt - sẽ rất vui khi bạn đưa điều đó vào làm đề xuất chỉnh sửa –