Tôi đang tìm kiếm bất kỳ tài nguyên nào đưa ra các ví dụ về Thực tiễn tốt nhất, các mẫu thiết kế và các nguyên tắc RẮN bằng Python.
Tôi đang tìm kiếm bất kỳ tài nguyên nào đưa ra các ví dụ về Thực tiễn tốt nhất, các mẫu thiết kế và các nguyên tắc RẮN bằng Python.
Câu trả lời:
Một số chồng chéo trong những
Phần mềm trung cấp và nâng cao Mộc trong Python
Mã như một Pythonista: Python thành ngữ
Ngày nhà phát triển của Google Hoa Kỳ - Các mẫu thiết kế Python
Một tài nguyên khác là ví dụ tại Python Recipes . Một số tốt không tuân theo các thực tiễn tốt nhất nhưng bạn có thể tìm thấy một số mẫu trong đó hữu ích
" Thinking in Python " của Bruce Eckel dựa rất nhiều vào các mẫu thiết kế
Bạn có thể bắt đầu ở đây và ở đây .
Để có cái nhìn sâu hơn về các phần thiết kế, bạn nên xem Mẫu thiết kế: Các yếu tố của phần mềm hướng đối tượng có thể tái sử dụng . Mã nguồn không có trong Python, nhưng bạn không cần phải hiểu các mẫu.
Một cái gì đó bạn có thể sử dụng để đơn giản hóa mã của mình khi gọi các thuộc tính trên các đối tượng có thể tồn tại hoặc không tồn tại là sử dụng Mẫu thiết kế đối tượng Null (mà tôi đã được giới thiệu trong Python Cookbook ).
Roughly, mục tiêu với các đối tượng Null là cung cấp một sự thay thế 'thông minh' cho kiểu dữ liệu nguyên thủy thường được sử dụng Không có trong Python hoặc Null (hoặc con trỏ Null) trong các ngôn ngữ khác. Chúng được sử dụng cho nhiều mục đích bao gồm cả trường hợp quan trọng trong đó một thành viên của một số nhóm yếu tố tương tự khác là đặc biệt vì bất kỳ lý do gì. Thông thường điều này dẫn đến các câu lệnh có điều kiện để phân biệt giữa các phần tử thông thường và giá trị Null nguyên thủy.
Đối tượng này chỉ ăn thiếu lỗi thuộc tính và bạn có thể tránh kiểm tra sự tồn tại của chúng.
Không có gì hơn
class Null(object):
def __init__(self, *args, **kwargs):
"Ignore parameters."
return None
def __call__(self, *args, **kwargs):
"Ignore method calls."
return self
def __getattr__(self, mname):
"Ignore attribute requests."
return self
def __setattr__(self, name, value):
"Ignore attribute setting."
return self
def __delattr__(self, name):
"Ignore deleting attributes."
return self
def __repr__(self):
"Return a string representation."
return "<Null>"
def __str__(self):
"Convert to a string and return it."
return "Null"
Với điều này, nếu bạn làm Null("any", "params", "you", "want").attribute_that_doesnt_exists()
nó sẽ không phát nổ, mà chỉ âm thầm trở thành tương đương pass
.
Thông thường bạn sẽ làm một cái gì đó như
if obj.attr:
obj.attr()
Với điều này, bạn chỉ cần làm:
obj.attr()
và quên nó đi Coi chừng việc sử dụng rộng rãi Null
đối tượng có khả năng che giấu các lỗi trong mã của bạn.
Bạn cũng có thể muốn đọc bài viết này (chọn tệp .pdf), thảo luận về Mẫu thiết kế trong các ngôn ngữ hướng đối tượng động (ví dụ: Python). Để trích dẫn trang:
Bài viết này tìm hiểu làm thế nào các mẫu từ cuốn sách "Gang of Four" hay "GOF", như thường được gọi, xuất hiện khi các vấn đề tương tự được giải quyết bằng ngôn ngữ lập trình hướng đối tượng, có thứ tự cao hơn. Một số mẫu biến mất - nghĩa là chúng được hỗ trợ trực tiếp bởi các tính năng ngôn ngữ, một số mẫu đơn giản hơn hoặc có trọng tâm khác nhau và một số mẫu về cơ bản không thay đổi.