[Python 3]numpy.ndarray: chuyển sang một lớp học "bình thường"
Tôi thích ndarray
nhưng tôi cảm thấy bực bội để sử dụng.
Đây là một vấn đề tôi gặp phải. Tôi muốn viết class Array
sẽ kế thừa nhiều chức năng của ndarray, nhưng chỉ có một cách để được khởi tạo: như là một mảng không chứa đầy một kích thước nhất định. Tôi đã hy vọng để viết:
class Array(numpy.ndarray):
def __init__(size):
# What do here?
Tôi muốn gọi super().__init__
với một số thông số để tạo ra một mảng zero-điền, nhưng nó sẽ không làm việc kể từ ndarray
sử dụng một chức năng toàn cầu numpy.zeros
(chứ không phải là một constructor) để tạo mảng không được lấp đầy.
Câu hỏi:
Tại sao ndarray sử dụng toàn cầu chức năng (mô-đun) thay vì nhà xây dựng trong nhiều trường hợp? Đó là một khó chịu lớn nếu tôi đang cố gắng tái sử dụng chúng trong một thiết lập hướng đối tượng.
Cách tốt nhất để xác định
class Array
mà tôi cần là gì? Tôi có nên điền thủ côngndarray
bằng số không hoặc có cách nào để sử dụng lại chức năngzeros
không?
Tôi không hiểu tại sao bạn muốn tạo lớp của riêng mình. Lợi thế của chức năng nhà máy 'numpy.zeros()' là gì? Nếu bạn không thích tên, chỉ cần đổi tên nó, như 'create_array = numpy.zeros'. –
Tôi không còn chắc chắn có lợi thế nữa. Có lẽ tôi không quen với chức năng của nhà máy. Tôi sẽ phải suy nghĩ về nó. – max
@Sven Marnach: Tôi đã tìm thấy một số liên kết về chủ đề chung này: http://stackoverflow.com/questions/628950/constructors-vs-factory-methods http://stackoverflow.com/questions/2959871/factory -vs-instance-constructors http://stackoverflow.com/questions/4617311/creation-of-objects-constructors-or-static-factory-methods Không có gì cụ thể cho Python, nhưng các nhận xét chung từ các ngôn ngữ khác dường như ứng dụng. Và theo như tôi có thể nói, thực sự không có bất lợi cho chức năng của nhà máy (ngoài sở thích cá nhân của tôi). – max