Hướng dẫn how do i create a multiple object class in python? - làm cách nào để tạo một lớp nhiều đối tượng trong python?
Giả sử bạn phải tạo 10 đối tượng lớp trong Python và làm điều gì đó với chúng, như: Show
Làm thế nào bạn sẽ làm điều đó với một vòng lặp và gán một biến cho mỗi đối tượng (như 9), để mã sẽ ngắn hơn? Mỗi đối tượng phải được truy cập bên ngoài vòng lặp
Đã hỏi ngày 6 tháng 2 năm 2014 lúc 9:34Feb 6, 2014 at 9:34
Alwbtcalwbtcalwbtc 26.8K59 Huy hiệu vàng129 Huy hiệu bạc185 Huy hiệu Đồng59 gold badges129 silver badges185 bronze badges 1 Câu hỏi này được hỏi mỗi ngày trong một số biến thể. Câu trả lời là: Giữ dữ liệu của bạn ra khỏi tên biến của bạn và đây là bài đăng trên blog bắt buộc. Trong trường hợp này, tại sao không lập một danh sách các OBJ?
Đã trả lời ngày 6 tháng 2 năm 2014 lúc 9:39Feb 6, 2014 at 9:39
REMCOGERLICHREMCOGERLICHRemcoGerlich 29,7K5 Huy hiệu vàng63 Huy hiệu bạc78 Huy hiệu Đồng5 gold badges63 silver badges78 bronze badges 2 Bạn có thể sử dụng danh sách để xác định nó.
Đã trả lời ngày 6 tháng 2 năm 2014 lúc 9:40Feb 6, 2014 at 9:40
3 Tạo một từ điển như nó đã đề cập, nhưng trong trường hợp này, mỗi khóa có tên của tên đối tượng mà bạn muốn tạo. Sau đó, giá trị được đặt làm lớp bạn muốn khởi tạo, xem ví dụ:
Sau đó, bạn chỉ cần gọi phím chủ và bạn sẽ có tất cả các thuộc tính và phương thức của lớp bạn có sẵn cho bạn.
output:
Đã trả lời ngày 18 tháng 1 năm 2017 lúc 13:11Jan 18, 2017 at 13:11
JobeljobelJobel 6136 Huy hiệu bạc12 Huy hiệu Đồng6 silver badges12 bronze badges 0 Sử dụng từ điển cho các tên duy nhất mà không có danh sách tên:
Output:
Đã trả lời ngày 29 tháng 5 năm 2020 lúc 2:35May 29, 2020 at 2:35
Tôi hy vọng đây là thứ bạn đang tìm kiếm.
Output: 0Đã trả lời ngày 6 tháng 2 năm 2014 lúc 9:45Feb 6, 2014 at 9:45
Tanveer Alamtanveer AlamTanveer Alam 5.0673 Huy hiệu vàng20 Huy hiệu bạc42 Huy hiệu Đồng3 gold badges20 silver badges42 bronze badges 2 Đôi khi bạn cần viết một lớp Python cung cấp nhiều cách để xây dựng các đối tượng. Nói cách khác, bạn muốn một lớp thực hiện nhiều hàm tạo. Loại lớp này có ích khi bạn cần tạo các phiên bản bằng các loại hoặc số lượng đối số khác nhau. Có các công cụ để cung cấp nhiều hàm tạo sẽ giúp bạn viết các lớp linh hoạt có thể thích ứng với nhu cầu thay đổi.multiple constructors. This kind of class comes in handy when you need to create instances using different types or numbers of arguments. Having the tools to provide multiple constructors will help you write flexible classes that can adapt to changing needs. Trong Python, có một số kỹ thuật và công cụ mà bạn có thể sử dụng để xây dựng các lớp, bao gồm mô phỏng nhiều hàm tạo thông qua các đối số tùy chọn, tùy chỉnh tạo thể hiện thông qua các phương thức lớp và thực hiện công văn đặc biệt với các trình trang trí. Nếu bạn muốn tìm hiểu về các kỹ thuật và công cụ này, thì hướng dẫn này là dành cho bạn. Trong hướng dẫn này, bạn sẽ học cách:
Bạn cũng đã học được cách Python xây dựng các trường hợp của một lớp nhất định và cách một số lớp thư viện tiêu chuẩn cung cấp nhiều hàm tạo.constructs instances of a regular class and how some standard-library classes provide multiple constructors. Với kiến thức này, bây giờ bạn có thể thêm gia vị cho các lớp học của mình với nhiều nhà xây dựng, trang bị cho họ một số cách để giải quyết quá trình khởi tạo trong Python. Các lớp học khởi tạo ở PythonPython hỗ trợ lập trình hướng đối tượng với các lớp đơn giản để tạo và sử dụng. Các lớp Python cung cấp các tính năng mạnh mẽ có thể giúp bạn viết phần mềm tốt hơn. Các lớp giống như bản thiết kế cho các đối tượng, còn được gọi là trường hợp. Theo cùng một cách mà bạn có thể xây dựng một số ngôi nhà từ một bản thiết kế duy nhất, bạn có thể xây dựng một số trường hợp từ một lớp.classes that are straightforward to create and use. Python classes offer powerful features that can help you write better software. Classes are like blueprints for objects, also known as instances. In the same way that you can build several houses from a single blueprint, you can build several instances from a class. Để xác định một lớp trong Python, bạn cần sử dụng từ khóa 3 theo sau là tên lớp:>>> 1Python có một bộ phương pháp đặc biệt phong phú mà bạn có thể sử dụng trong các lớp học của mình. Python ngầm gọi các phương thức đặc biệt để tự động thực hiện nhiều hoạt động khác nhau trên các trường hợp. Có các phương pháp đặc biệt để làm cho các đối tượng của bạn trở nên dễ dàng, cung cấp một biểu diễn chuỗi phù hợp cho các đối tượng của bạn, khởi tạo các thuộc tính thể hiện và nhiều hơn nữa. Một phương pháp đặc biệt khá phổ biến là 4. Phương pháp này cung cấp những gì được gọi là trình khởi tạo thể hiện trong Python. Phương thức này Công việc là để khởi tạo các thuộc tính thể hiện với các giá trị phù hợp khi bạn khởi tạo một lớp nhất định.instance initializer in Python. This method’s job is to initialize instance attributes with appropriate values when you instantiate a given class.Trong 5, đối số đầu tiên của phương thức 4 được gọi là 7. Đối số này giữ đối tượng hoặc thể hiện hiện tại, được truyền ngầm trong cuộc gọi phương thức. Đối số này là phổ biến cho mọi phương thức thể hiện trong Python. Đối số thứ hai của 4 được gọi là 9 và sẽ giữ tên người đó dưới dạng chuỗi.Khi bạn đã xác định một lớp, bạn có thể bắt đầu khởi tạo nó. Nói cách khác, bạn có thể bắt đầu tạo các đối tượng của lớp đó. Để làm điều này, bạn sẽ sử dụng một cú pháp quen thuộc. Chỉ cần gọi lớp bằng cách sử dụng một cặp dấu ngoặc đơn ( 0), đó là cùng một cú pháp mà bạn sử dụng để gọi bất kỳ chức năng Python nào:instantiating it. In other words, you can start creating objects of that class. To do this, you’ll use a familiar syntax. Just call the class using a pair of parentheses ( 0), which is the same syntax that you use to call any Python function:>>> 2Python có một bộ phương pháp đặc biệt phong phú mà bạn có thể sử dụng trong các lớp học của mình. Python ngầm gọi các phương thức đặc biệt để tự động thực hiện nhiều hoạt động khác nhau trên các trường hợp. Có các phương pháp đặc biệt để làm cho các đối tượng của bạn trở nên dễ dàng, cung cấp một biểu diễn chuỗi phù hợp cho các đối tượng của bạn, khởi tạo các thuộc tính thể hiện và nhiều hơn nữa.class constructor. Calling a class, like you did with 5, triggers Python’s class instantiation process, which internally runs in two steps:
Khi bạn đã xác định một lớp, bạn có thể bắt đầu khởi tạo nó. Nói cách khác, bạn có thể bắt đầu tạo các đối tượng của lớp đó. Để làm điều này, bạn sẽ sử dụng một cú pháp quen thuộc. Chỉ cần gọi lớp bằng cách sử dụng một cặp dấu ngoặc đơn ( 0), đó là cùng một cú pháp mà bạn sử dụng để gọi bất kỳ chức năng Python nào:Trong Python, tên lớp cung cấp những gì các ngôn ngữ khác, chẳng hạn như C ++ và Java, gọi hàm tạo lớp. Gọi một lớp, giống như bạn đã làm với 5, kích hoạt quá trình khởi tạo lớp Python, trong hai bước chạy trong hai bước:Tạo một thể hiện mới của lớp đích. Khởi tạo thể hiện với các giá trị thuộc tính thể hiện phù hợp. Để tiếp tục với ví dụ trên, giá trị mà bạn chuyển dưới dạng đối số cho 5 được chuyển nội bộ đến 4 và sau đó được gán cho thuộc tính thể hiện 4. Bằng cách này, bạn khởi tạo phiên bản người của bạn, 5, với dữ liệu hợp lệ mà bạn có thể xác nhận bằng cách truy cập 4. Thành công! 7 thực sự là tên của anh ấy.Bây giờ bạn đã hiểu cơ chế khởi tạo đối tượng, bạn đã sẵn sàng tìm hiểu những gì Python làm trước khi nó đi đến điểm này trong quá trình khởi tạo. Nó thời gian để đào sâu vào một phương pháp đặc biệt khác, được gọi là 8. Phương pháp này quan tâm đến việc tạo ra các trường hợp mới trong Python.Phương thức đặc biệt 8 lấy lớp cơ bản làm đối số đầu tiên của nó và trả về một đối tượng mới. Đối tượng này thường là một thể hiện của lớp đầu vào, nhưng trong một số trường hợp, nó có thể là một ví dụ của một lớp khác.multiple constructors in your classes. In other words, you’ll provide multiple
ways to construct objects of a given Python class.Nếu đối tượng holder['red'].checkme 8 trả về là một thể hiện của lớp hiện tại, thì trường hợp này ngay lập tức được chuyển sang class MyClass: def __init__(self, name): self.name = name self.checkme = 'awesome {}'.format(self.name) ... instanceNames = ['red', 'green', 'blue'] # Here you use the dictionary holder = {name: MyClass(name=name) for name in instanceNames} 4 cho mục đích khởi tạo. Hai bước này chạy khi bạn gọi lớp.Lớp Python từ ____ ____62 cung cấp việc triển khai cơ sở hoặc mặc định là 8 và 4. Không giống như với 4, bạn hiếm khi cần ghi đè 8 trong các lớp tùy chỉnh của mình. Hầu hết thời gian, bạn có thể dựa vào việc thực hiện mặc định một cách an toàn.Để tóm tắt những gì bạn đã học được cho đến nay, quá trình khởi tạo Python, bắt đầu khi bạn gọi một lớp với các đối số thích hợp. Sau đó, quá trình chạy qua hai bước: tạo đối tượng với phương thức 8 và khởi tạo đối tượng với phương thức 4.Quá tải phương thức có nghĩa là tùy thuộc vào cách bạn gọi phương thức trong tay, ngôn ngữ sẽ chọn triển khai phù hợp để chạy. Vì vậy, phương pháp của bạn có thể thực hiện các nhiệm vụ khác nhau theo ngữ cảnh của cuộc gọi. Thật không may, Python không hỗ trợ chức năng quá tải trực tiếp. Các lớp Python giữ tên phương thức trong một từ điển nội bộ được gọi là 9, giữ không gian tên lớp. Giống như bất kỳ từ điển Python nào, 9 có thể có các khóa lặp lại, vì vậy bạn có thể có nhiều phương thức có cùng tên trong một lớp nhất định. Nếu bạn cố gắng làm như vậy, thì Python sẽ chỉ nhớ lần thực hiện cuối cùng của phương thức: 3Trong ví dụ này, bạn tạo 1 như một lớp Python với hai phương thức. Cả hai phương pháp đều có cùng tên, nhưng chúng có triển khai hơi khác nhau.Để tìm hiểu những gì xảy ra khi hai phương thức có cùng tên, hãy lưu lớp của bạn vào tệp 2 trong thư mục làm việc của bạn và chạy mã sau trong phiên tương tác:>>> 4Trong ví dụ này, bạn gọi 3 vào 4, đây là một ví dụ của lớp 1. Bạn nhận được 6 thay vì 7 trên màn hình của mình, điều này xác nhận rằng việc triển khai phương thức thứ hai chiếm ưu thế trong lần đầu tiên.Dòng mã cuối cùng kiểm tra nội dung của 9, phát hiện ra rằng tên phương thức, 9, chỉ xuất hiện một lần trong không gian tên lớp. Điều này phù hợp với cách từ điển hoạt động trong Python.Một cái gì đó tương tự xảy ra với các chức năng trong mô -đun Python và trong một phiên tương tác. Việc triển khai cuối cùng của một số chức năng có cùng tên chiếm ưu thế trong phần còn lại của các triển khai: >>> 5Trong ví dụ này, bạn gọi 3 vào 4, đây là một ví dụ của lớp 1. Bạn nhận được 6 thay vì 7 trên màn hình của mình, điều này xác nhận rằng việc triển khai phương thức thứ hai chiếm ưu thế trong lần đầu tiên.Dòng mã cuối cùng kiểm tra nội dung của 9, phát hiện ra rằng tên phương thức, 9, chỉ xuất hiện một lần trong không gian tên lớp. Điều này phù hợp với cách từ điển hoạt động trong Python.Một cái gì đó tương tự xảy ra với các chức năng trong mô -đun Python và trong một phiên tương tác. Việc triển khai cuối cùng của một số chức năng có cùng tên chiếm ưu thế trong phần còn lại của các triển khai: Bạn xác định hai chức năng có cùng tên, 0, trong cùng một phiên phiên dịch. Tuy nhiên, định nghĩa thứ hai ghi đè lên định nghĩa thứ nhất. Khi bạn gọi hàm, bạn sẽ nhận được 6, điều này xác nhận rằng định nghĩa hàm cuối cùng chiếm ưu thế.Một kỹ thuật khác mà một số ngôn ngữ lập trình sử dụng để cung cấp nhiều cách để gọi một phương thức hoặc hàm là nhiều công văn. Với kỹ thuật này, bạn có thể viết một số triển khai khác nhau của cùng một phương thức hoặc chức năng và tự động gửi quá trình thực hiện mong muốn theo loại hoặc các đặc điểm khác của các đối số được sử dụng trong cuộc gọi. Bạn có thể sử dụng một vài công cụ từ thư viện tiêu chuẩn để kéo kỹ thuật này vào mã Python của bạn.Python là một ngôn ngữ khá linh hoạt và giàu tính năng và cung cấp một vài cách để thực hiện nhiều hàm tạo và làm cho các lớp của bạn linh hoạt hơn.optional arguments using default argument values. This way, you can call the class constructor in different ways and get a different behavior each time. Trong phần sau, bạn sẽ mô phỏng nhiều hàm tạo bằng cách truyền các đối số tùy chọn và bằng cách kiểm tra các loại đối số để xác định các hành vi khác nhau trong các bộ khởi tạo thể hiện của bạn.data type of the arguments to 4 to provide different behaviors depending on the concrete data type that you pass in the call. This technique allows you to simulate multiple constructors in a class.Mô phỏng nhiều hàm tạo trong các lớp của bạn Một kỹ thuật khá hữu ích để mô phỏng nhiều hàm tạo trong lớp Python là cung cấp class MyClass: def __init__(self, name): self.name = name self.checkme = 'awesome {}'.format(self.name) ... instanceNames = ['red', 'green', 'blue'] # Here you use the dictionary holder = {name: MyClass(name=name) for name in instanceNames} 4 với các đối số tùy chọn bằng cách sử dụng các giá trị đối số mặc định. Bằng cách này, bạn có thể gọi hàm tạo lớp theo những cách khác nhau và nhận được một hành vi khác nhau mỗi lần.Một chiến lược khác là kiểm tra kiểu dữ liệu của các đối số thành 4 để cung cấp các hành vi khác nhau tùy thuộc vào loại dữ liệu cụ thể mà bạn vượt qua trong cuộc gọi. Kỹ thuật này cho phép bạn mô phỏng nhiều hàm tạo trong một lớp.optional arguments. You can do this by specifying appropriate default argument values.Trong phần này, bạn sẽ tìm hiểu những điều cơ bản về cách mô phỏng nhiều cách để xây dựng các đối tượng bằng cách cung cấp các giá trị mặc định phù hợp cho các đối số của phương thức 4 và cũng bằng cách kiểm tra loại dữ liệu của các đối số cho phương thức này. Cả hai phương pháp chỉ yêu cầu một triển khai 4.Sử dụng các giá trị đối số tùy chọn trong 4 6Một cách thanh lịch và pythonic để mô phỏng nhiều hàm tạo là thực hiện phương pháp 4 với các đối số tùy chọn. Bạn có thể làm điều này bằng cách chỉ định các giá trị đối số mặc định phù hợp.Biểu tượng sao hoặc dấu hoa thị ( 5) sau 2 có nghĩa là 3 là một đối số chỉ dành cho từ khóa. Để chuyển một giá trị cho một đối số chỉ từ khóa, bạn cần sử dụng tên đối số một cách rõ ràng. Nói cách khác, để đặt 8 thành 9, bạn cần gõ rõ ràng 00.Đối số 3 giữ giá trị ban đầu để tính tổng công suất tích lũy. Nó mặc định là 02, là giá trị thích hợp cho những trường hợp mà bạn không có giá trị được tính toán trước đây để khởi tạo tổng công suất tích lũy.Phương pháp đặc biệt 03 biến các phiên bản của 8 thành các đối tượng có thể gọi được. Nói cách khác, bạn có thể gọi các phiên bản của 8 như bạn gọi bất kỳ chức năng chính quy nào.callable objects. In other words, you can call the instances of 8 like you call any regular function.Bên trong 03, trước tiên bạn tính toán sức mạnh của 07 được nâng lên 2. Sau đó, bạn thêm giá trị kết quả vào giá trị hiện tại của 09. Cuối cùng, bạn trả lại sức mạnh được tính toán.Để thử 8, hãy mở một phiên tương tác Python trong thư mục chứa 9 và chạy mã sau:>>> 7Những ví dụ này cho thấy cách 8 mô phỏng nhiều hàm tạo. Ví dụ, hàm tạo đầu tiên không có đối số. Nó cho phép bạn tạo các phiên bản lớp tính toán quyền hạn của 4, đây là giá trị mặc định của đối số 2. Thuộc tính thể hiện ____109 chứa tổng tích lũy của các quyền hạn được tính toán khi bạn đi.Ví dụ thứ hai cho thấy một hàm tạo lấy 2 làm đối số và trả về một thể hiện có thể gọi được tính toán các khối. Trong trường hợp này, 09 hoạt động giống như trong ví dụ đầu tiên.Ví dụ thứ ba cho thấy cách 8 dường như có một hàm tạo khác cho phép bạn tạo các phiên bản bằng cách cung cấp các đối số 2 và 3. Bây giờ 09 bắt đầu với giá trị 22, khởi tạo tổng sức mạnh.Sử dụng các đối số tùy chọn khi bạn thực hiện 4 trong các lớp của bạn là một kỹ thuật sạch và pythonic để tạo ra các lớp mô phỏng nhiều hàm tạo.Kiểm tra các loại đối số trong class MyClass: def __init__(self, name): self.name = name self.checkme = 'awesome {}'.format(self.name) ... instanceNames = ['red', 'green', 'blue'] # Here you use the dictionary holder = {name: MyClass(name=name) for name in instanceNames} 4Một cách tiếp cận khác để mô phỏng nhiều hàm tạo là viết một phương thức 4 hoạt động khác nhau tùy thuộc vào loại đối số. Để kiểm tra loại biến trong Python, bạn thường dựa vào hàm 26 tích hợp. Hàm này trả về 27 Nếu một đối tượng là một thể hiện của một lớp đã cho và 28 nếu không:>>> 8Những ví dụ này cho thấy cách 8 mô phỏng nhiều hàm tạo. Ví dụ, hàm tạo đầu tiên không có đối số. Nó cho phép bạn tạo các phiên bản lớp tính toán quyền hạn của 4, đây là giá trị mặc định của đối số 2. Thuộc tính thể hiện ____109 chứa tổng tích lũy của các quyền hạn được tính toán khi bạn đi.Ví dụ thứ hai cho thấy một hàm tạo lấy 2 làm đối số và trả về một thể hiện có thể gọi được tính toán các khối. Trong trường hợp này, 09 hoạt động giống như trong ví dụ đầu tiên.>>> 9Những ví dụ này cho thấy cách 8 mô phỏng nhiều hàm tạo. Ví dụ, hàm tạo đầu tiên không có đối số. Nó cho phép bạn tạo các phiên bản lớp tính toán quyền hạn của 4, đây là giá trị mặc định của đối số 2. Thuộc tính thể hiện ____109 chứa tổng tích lũy của các quyền hạn được tính toán khi bạn đi.Ví dụ thứ hai cho thấy một hàm tạo lấy 2 làm đối số và trả về một thể hiện có thể gọi được tính toán các khối. Trong trường hợp này, 09 hoạt động giống như trong ví dụ đầu tiên.Ví dụ thứ ba cho thấy cách 8 dường như có một hàm tạo khác cho phép bạn tạo các phiên bản bằng cách cung cấp các đối số 2 và 3. Bây giờ 09 bắt đầu với giá trị 22, khởi tạo tổng sức mạnh.Sử dụng các đối số tùy chọn khi bạn thực hiện 4 trong các lớp của bạn là một kỹ thuật sạch và pythonic để tạo ra các lớp mô phỏng nhiều hàm tạo.Kiểm tra các loại đối số trong 4>>> 0Những ví dụ này cho thấy cách 8 mô phỏng nhiều hàm tạo. Ví dụ, hàm tạo đầu tiên không có đối số. Nó cho phép bạn tạo các phiên bản lớp tính toán quyền hạn của 4, đây là giá trị mặc định của đối số 2. Thuộc tính thể hiện ____109 chứa tổng tích lũy của các quyền hạn được tính toán khi bạn đi.Ví dụ thứ hai cho thấy một hàm tạo lấy 2 làm đối số và trả về một thể hiện có thể gọi được tính toán các khối. Trong trường hợp này, 09 hoạt động giống như trong ví dụ đầu tiên.unsupported date formats:>>> 1Trong ví dụ này, mệnh đề 50 chạy nếu giá trị của 39 không phải là đối tượng 32 hoặc một chuỗi giữ một ngày ISO hợp lệ. Bằng cách này, tình huống đặc biệt không vượt qua âm thầm.Cung cấp nhiều hàm tạo với class MyClass: def __init__(self, name): self.name = name self.checkme = 'awesome {}'.format(self.name) ... instanceNames = ['red', 'green', 'blue'] # Here you use the dictionary holder = {name: MyClass(name=name) for name in instanceNames} 0 trong PythonMột kỹ thuật mạnh mẽ để cung cấp nhiều hàm tạo trong Python là sử dụng 0. Bộ trang trí này cho phép bạn biến một phương pháp thông thường thành phương pháp lớp.class method.Không giống như các phương pháp thông thường, các phương thức lớp don don lấy ví dụ hiện tại, 7, như một đối số. Thay vào đó, họ tự mình tham gia lớp học, thường được thông qua như đối số 57. Sử dụng 57 để đặt tên cho đối số này là một quy ước phổ biến trong cộng đồng Python.Ở đây, cú pháp cơ bản để xác định phương pháp lớp: >>> 2 59 Xác định một phương pháp lớp sử dụng trình trang trí 0 tích hợp Python. Đối số đầu tiên của 61 giữ bản thân lớp. Thông qua lập luận này, bạn có thể truy cập lớp từ bên trong chính nó. Trong ví dụ này, bạn truy cập thuộc tính 62, lưu trữ tên của lớp bên dưới dưới dạng chuỗi.Điều quan trọng cần lưu ý là bạn có thể truy cập một phương thức lớp bằng cách sử dụng lớp hoặc một thể hiện cụ thể của lớp trong tay. Bất kể bạn gọi 61 như thế nào, nó sẽ nhận được 59 làm đối số đầu tiên của nó. Lý do cuối cùng tại sao bạn có thể sử dụng các phương thức lớp như các hàm tạo là vì bạn không cần một ví dụ để gọi một phương thức lớp.Sử dụng 0 giúp có thể thêm nhiều hàm tạo rõ ràng như bạn cần vào một lớp nhất định. Nó là một cách pythonic và phổ biến để thực hiện nhiều hàm tạo. Bạn cũng có thể gọi loại nhà xây dựng này là một hàm tạo thay thế trong Python, như Raymond Hettinger làm trong bộ công cụ phát triển lớp Pycon Talk Python của anh ấy.alternative constructor in Python, as Raymond Hettinger does in his PyCon talk Python’s Class Development Toolkit.Bây giờ, làm thế nào bạn có thể sử dụng một phương thức lớp để tùy chỉnh quá trình khởi tạo Python? Thay vì tinh chỉnh 4 và khởi tạo đối tượng, bạn sẽ kiểm soát cả hai bước: tạo và khởi tạo đối tượng. Thông qua các ví dụ sau, bạn sẽ học cách làm điều đó.Xây dựng một vòng tròn từ đường kính của nóĐể tạo hàm tạo lớp đầu tiên của bạn với 0, hãy nói rằng bạn đang mã hóa một ứng dụng liên quan đến hình học và cần một lớp 68. Ban đầu, bạn xác định lớp của mình như sau: 3Bộ khởi tạo của 68 lấy giá trị bán kính làm đối số và lưu trữ nó trong một thuộc tính thể hiện có tên là 70. Sau đó, lớp thực hiện các phương pháp để tính toán khu vực vòng tròn và chu vi bằng cách sử dụng mô -đun Python, ____ ____171. Phương pháp đặc biệt 72 trả về một biểu diễn chuỗi phù hợp cho lớp của bạn.string representation for your class.Hãy tiếp tục và tạo tệp 73 trong thư mục làm việc của bạn. Sau đó mở trình thông dịch Python và chạy mã sau để dùng thử 68:>>> 4Mát mẻ! Lớp học của bạn hoạt động chính xác! Bây giờ nói rằng bạn cũng muốn khởi tạo 68 bằng đường kính. Bạn có thể làm một cái gì đó như 76, nhưng điều đó không hoàn toàn pythonic hoặc trực quan. Nó tốt hơn để có một hàm tạo thay thế để tạo vòng tròn bằng cách sử dụng trực tiếp đường kính của chúng.Đi trước và thêm phương thức lớp sau vào 68 ngay sau 4: 5Ở đây, bạn định nghĩa 79 là một phương thức lớp. Đối số đầu tiên của nó nhận được một tham chiếu đến lớp chứa, 68.Đối số thứ hai giữ đường kính của vòng tròn cụ thể mà bạn muốn tạo. Bên trong phương thức, trước tiên bạn tính toán bán kính bằng cách sử dụng giá trị đầu vào của 81. Sau đó, bạn khởi tạo 68 bằng cách gọi 57 với bán kính xuất phát từ đối số 81.Bằng cách này, bạn có thể kiểm soát hoàn toàn việc tạo và khởi tạo các trường hợp của 68 bằng cách sử dụng đường kính làm đối số.Cuộc gọi đến đối số 57 tự động chạy các bước tạo và khởi tạo đối tượng mà Python cần để khởi tạo một lớp. Cuối cùng, 79 trả về thể hiện mới cho người gọi.Tại đây, cách bạn có thể sử dụng hàm tạo hoàn toàn mới của mình để tạo vòng tròn bằng cách sử dụng đường kính: >>> 6Cuộc gọi đến 79 trên 68 trả về một thể hiện mới của lớp. Để xây dựng thể hiện đó, phương thức sử dụng đường kính thay vì bán kính. Lưu ý rằng phần còn lại của chức năng của 68 hoạt động giống như trước đây.Sử dụng 0 như bạn đã làm trong ví dụ trên là cách phổ biến nhất để cung cấp nhiều hàm tạo rõ ràng trong các lớp của bạn. Với kỹ thuật này, bạn có tùy chọn để chọn đúng tên cho từng hàm tạo thay thế mà bạn cung cấp, có thể làm cho mã của bạn dễ đọc và duy trì hơn.Xây dựng điểm cực từ tọa độ CartesianĐể biết một ví dụ phức tạp hơn về việc cung cấp nhiều hàm tạo bằng các phương thức lớp, giả sử bạn có một lớp đại diện cho một điểm cực trong một ứng dụng liên quan đến toán học. Bạn cần một cách để làm cho lớp học của bạn linh hoạt hơn để bạn có thể xây dựng các trường hợp mới bằng các tọa độ Cartesian. Tại đây, cách bạn có thể viết một hàm tạo để đáp ứng yêu cầu này: 7Trong ví dụ này, 92 có hai đối số đại diện cho một điểm nhất định ____ ____193 và 94 tọa độ Cartesian. Sau đó, phương pháp tính toán yêu cầu 95 và 96 để xây dựng đối tượng 97 tương ứng. Cuối cùng, 92 trả về một thể hiện mới của lớp.Ở đây, cách thức hoạt động của lớp, sử dụng cả hai hệ tọa độ: >>> 8Trong các ví dụ này, bạn sử dụng quy trình khởi tạo tiêu chuẩn và hàm tạo thay thế của bạn, 92, để tạo các trường hợp 97 bằng cách sử dụng các đối số khởi tạo khác nhau về mặt khái niệm.Khám phá nhiều hàm tạo trong các lớp Python hiện cóSử dụng trình trang trí 0 để cung cấp nhiều hàm tạo trong một lớp là một kỹ thuật khá phổ biến trong Python. Có một số ví dụ về các lớp thư viện tiêu chuẩn và tích hợp sử dụng kỹ thuật này để cung cấp nhiều hàm tạo thay thế.Trong phần này, bạn sẽ tìm hiểu về ba trong số các ví dụ đáng chú ý nhất của các lớp này: 02, 03 và 04.Xây dựng từ điển từ các khóaTừ điển là một loại dữ liệu cơ bản trong Python. Họ có mặt trong mỗi đoạn mã Python, rõ ràng hoặc ngầm. Họ cũng là một nền tảng của chính ngôn ngữ bởi vì các phần quan trọng của việc triển khai Cpython dựa vào chúng. Bạn có một số cách để xác định các trường hợp từ điển trong Python. Bạn có thể sử dụng các chữ từ điển, bao gồm các cặp giá trị khóa trong ngoặc xoăn ( 05). Bạn cũng có thể gọi 06 một cách rõ ràng với các đối số từ khóa hoặc với một chuỗi các bộ dữ liệu hai mục chẳng hạn.Lớp phổ biến này cũng thực hiện một hàm tạo thay thế được gọi là 07. Phương pháp lớp này có một 08 của các khóa và một 9 tùy chọn. Đối số 9 mặc định là 11 và hoạt động như giá trị cho tất cả các khóa trong từ điển kết quả.Bây giờ, làm thế nào 07 có thể hữu ích trong mã của bạn? Giả sử bạn đang điều hành một nơi trú ẩn động vật và bạn cần xây dựng một ứng dụng nhỏ để theo dõi xem có bao nhiêu động vật hiện đang sống trong nơi trú ẩn của bạn. Ứng dụng của bạn sử dụng từ điển để lưu trữ hàng tồn kho của động vật.Bởi vì bạn đã biết loài nào bạn có khả năng nhà ở tại nơi trú ẩn, bạn có thể tạo từ điển hàng tồn kho ban đầu một cách linh hoạt, như trong đoạn mã sau: >>> 9Trong các ví dụ này, bạn sử dụng quy trình khởi tạo tiêu chuẩn và hàm tạo thay thế của bạn, 92, để tạo các trường hợp 97 bằng cách sử dụng các đối số khởi tạo khác nhau về mặt khái niệm.Khám phá nhiều hàm tạo trong các lớp Python hiện có Sử dụng trình trang trí 0 để cung cấp nhiều hàm tạo trong một lớp là một kỹ thuật khá phổ biến trong Python. Có một số ví dụ về các lớp thư viện tiêu chuẩn và tích hợp sử dụng kỹ thuật này để cung cấp nhiều hàm tạo thay thế. 0Trong phần này, bạn sẽ tìm hiểu về ba trong số các ví dụ đáng chú ý nhất của các lớp này: 02, 03 và 04.Xây dựng từ điển từ các khóaTừ điển là một loại dữ liệu cơ bản trong Python. Họ có mặt trong mỗi đoạn mã Python, rõ ràng hoặc ngầm. Họ cũng là một nền tảng của chính ngôn ngữ bởi vì các phần quan trọng của việc triển khai Cpython dựa vào chúng. Bạn có một số cách để xác định các trường hợp từ điển trong Python. Bạn có thể sử dụng các chữ từ điển, bao gồm các cặp giá trị khóa trong ngoặc xoăn ( 05). Bạn cũng có thể gọi 06 một cách rõ ràng với các đối số từ khóa hoặc với một chuỗi các bộ dữ liệu hai mục chẳng hạn.>>> 1Trong các ví dụ này, bạn sử dụng quy trình khởi tạo tiêu chuẩn và hàm tạo thay thế của bạn, 92, để tạo các trường hợp 97 bằng cách sử dụng các đối số khởi tạo khác nhau về mặt khái niệm.Khám phá nhiều hàm tạo trong các lớp Python hiện có Tìm con đường của bạn về nhàMô -đun Python từ 44 từ thư viện tiêu chuẩn cung cấp các công cụ tiện lợi và hiện đại để xử lý các đường dẫn hệ thống trong mã của bạn. Nếu bạn không bao giờ sử dụng mô -đun này, thì hãy xem mô -đun Python 3 Pathlib: Tâm hệ thống tệp.Công cụ đẹp nhất trong 44 là lớp 46 của nó. Lớp này cho phép bạn xử lý đường dẫn hệ thống của mình theo cách đa nền tảng. 46 là một lớp thư viện tiêu chuẩn khác cung cấp nhiều hàm tạo. Ví dụ: bạn sẽ tìm thấy 48, tạo ra một đối tượng đường dẫn từ thư mục nhà của bạn:
>>> 2>>> 3Trình xây dựng 49 trả về một đối tượng đường dẫn mới đại diện cho thư mục nhà của người dùng. Trình xây dựng thay thế này có thể hữu ích khi bạn xử lý các tệp cấu hình trong các ứng dụng và dự án Python của bạn.Cuối cùng, 46 cũng cung cấp một hàm tạo gọi là 51. Phương pháp này tạo ra một đối tượng đường dẫn từ thư mục làm việc hiện tại của bạn. Hãy tiếp tục và thử nó!Cung cấp nhiều hàm tạo với class MyClass: def __init__(self, name): self.name = name self.checkme = 'awesome {}'.format(self.name) ... instanceNames = ['red', 'green', 'blue'] # Here you use the dictionary holder = {name: MyClass(name=name) for name in instanceNames} 1Kỹ thuật cuối cùng mà bạn sẽ học được được gọi là các hàm chung đơn. Với kỹ thuật này, bạn có thể thêm nhiều hàm tạo vào các lớp của mình và chạy chúng một cách chọn lọc, theo loại đối số đầu tiên của họ. Chức năng chung chung đơn bao gồm nhiều chức năng thực hiện cùng một hoạt động cho các loại dữ liệu khác nhau. Thuật toán công văn cơ bản xác định việc thực hiện để chạy dựa trên loại đối số duy nhất. Đó là nơi mà thuật ngữ một công văn xuất phát.dispatch algorithm determines which implementation to run based on the type of a single argument. That’s where the term single dispatch comes from. Bắt đầu với Python 3.8, bạn có thể sử dụng trình trang trí 53 hoặc 1 để biến hàm hoặc phương thức, tương ứng, thành một hàm chung đơn. PEP 443 giải thích rằng bạn có thể tìm thấy các nhà trang trí này trong mô -đun 55.Trong một chức năng thông thường, Python chọn cách thực hiện để gửi theo loại đối số đầu tiên của hàm. Trong một phương thức, đối số đích là định hướng đầu tiên ngay sau 7.Một ví dụ về bản demo về phương pháp đơn lẻĐể áp dụng kỹ thuật phương pháp đơn Dispatch cho một lớp nhất định, bạn cần xác định triển khai phương thức cơ sở và trang trí nó với 1. Sau đó, bạn có thể viết các triển khai thay thế và trang trí chúng bằng tên của phương thức cơ sở cộng với 58.Ở đây, một ví dụ cho thấy cú pháp cơ bản: 4Trong 59, trước tiên bạn xác định một phương thức cơ sở gọi là 60 và trang trí nó với 1. Sau đó, bạn xác định hai triển khai thay thế 60 và trang trí chúng bằng 63.Trong ví dụ này, bạn đặt tên cho các triển khai thay thế bằng cách sử dụng một dấu gạch dưới ( 64) làm tên trình giữ chỗ. Trong mã thực, bạn nên sử dụng tên mô tả, miễn là chúng khác với tên phương thức cơ sở, 60. Khi sử dụng tên mô tả, hãy xem xét thêm một dấu gạch dưới hàng đầu để đánh dấu các phương thức thay thế là không công khai và ngăn chặn các cuộc gọi trực tiếp từ người dùng cuối của bạn.non-public and prevent direct calls from your end users.Bạn có thể sử dụng các chú thích loại để xác định loại đối số đích. Bạn cũng có thể chuyển một cách rõ ràng loại đối số mục tiêu cho trình trang trí 66. Nếu bạn cần xác định một phương thức để xử lý một số loại, thì bạn có thể xếp nhiều cuộc gọi lên 66, với loại cần thiết cho mỗi loại.Đây là cách mà lớp học của bạn hoạt động: >>> 5Trình xây dựng 49 trả về một đối tượng đường dẫn mới đại diện cho thư mục nhà của người dùng. Trình xây dựng thay thế này có thể hữu ích khi bạn xử lý các tệp cấu hình trong các ứng dụng và dự án Python của bạn.Cuối cùng, 46 cũng cung cấp một hàm tạo gọi là 51. Phương pháp này tạo ra một đối tượng đường dẫn từ thư mục làm việc hiện tại của bạn. Hãy tiếp tục và thử nó!Cung cấp nhiều hàm tạo với class MyClass: def __init__(self, name): self.name = name self.checkme = 'awesome {}'.format(self.name) ... instanceNames = ['red', 'green', 'blue'] # Here you use the dictionary holder = {name: MyClass(name=name) for name in instanceNames} 1Kỹ thuật cuối cùng mà bạn sẽ học được được gọi là các hàm chung đơn. Với kỹ thuật này, bạn có thể thêm nhiều hàm tạo vào các lớp của mình và chạy chúng một cách chọn lọc, theo loại đối số đầu tiên của họ. Chức năng chung chung đơn bao gồm nhiều chức năng thực hiện cùng một hoạt động cho các loại dữ liệu khác nhau. Thuật toán công văn cơ bản xác định việc thực hiện để chạy dựa trên loại đối số duy nhất. Đó là nơi mà thuật ngữ một công văn xuất phát. 6Bắt đầu với Python 3.8, bạn có thể sử dụng trình trang trí 53 hoặc 1 để biến hàm hoặc phương thức, tương ứng, thành một hàm chung đơn. PEP 443 giải thích rằng bạn có thể tìm thấy các nhà trang trí này trong mô -đun 55.
Bây giờ bạn có thể sử dụng thành phần trong lớp 5 của mình để tận dụng lớp 80 mới. Đi trước và cập nhật 5 với mã sau: 7Trong bản cập nhật này, 5 có một thuộc tính không công khai mới có tên là 95, đây là một ví dụ là 80. Trường hợp này được khởi tạo với đối số đầu vào 39. Bộ khởi tạo quá tải của 80 sẽ khởi tạo 95 theo ngày sinh của người dùng.Sau đó, bạn xác định 89 là một thuộc tính để cung cấp một thuộc tính được tính toán trả về độ tuổi gần đúng của người. Việc bổ sung cuối cùng cho 5 là thuộc tính 02, trả lại ngày sinh của người đó dưới dạng đối tượng 32.Để thử các lớp 5 và 80 của bạn, hãy mở một phiên tương tác và chạy mã sau:>>> 8Bạn có thể khởi tạo 5 bằng các định dạng ngày khác nhau. Thể hiện nội bộ của 07 tự động chuyển đổi ngày đầu vào thành một đối tượng ngày. Nếu bạn khởi tạo 5 với định dạng ngày không được hỗ trợ, chẳng hạn như từ điển, thì bạn sẽ nhận được 82.Lưu ý rằng 10 chăm sóc xử lý ngày sinh đầu vào cho bạn. Không cần phải sử dụng các hàm tạo thay thế rõ ràng để xử lý các loại đầu vào khác nhau. Bạn chỉ có thể khởi tạo lớp bằng hàm tạo tiêu chuẩn.Hạn chế chính của kỹ thuật phương pháp đơn lẻ là nó dựa vào một đối số duy nhất, đối số đầu tiên sau 7. Nếu bạn cần sử dụng nhiều đối số để gửi các triển khai phù hợp, thì hãy kiểm tra một số thư viện của bên thứ ba hiện có, chẳng hạn như MultipleSpatch và Multimethod.Sự kết luậnViết các lớp Python với nhiều hàm tạo có thể làm cho mã của bạn linh hoạt và linh hoạt hơn, bao gồm một loạt các trường hợp sử dụng. Nhiều hàm tạo là một tính năng mạnh mẽ cho phép bạn xây dựng các phiên bản của lớp cơ bản bằng cách sử dụng các đối số của các loại khác nhau, một số lượng đối số khác nhau hoặc cả hai, tùy thuộc vào nhu cầu của bạn.multiple constructors can make your code more versatile and flexible, covering a wide range of use cases. Multiple constructors are a powerful feature that allows you to build instances of the underlying class using arguments of different types, a different number of arguments, or both, depending on your needs. Trong hướng dẫn này, bạn đã học được cách:
Bạn cũng đã học được cách Python xây dựng các trường hợp của một lớp nhất định và cách một số lớp thư viện tiêu chuẩn cung cấp nhiều hàm tạo.constructs instances of a given class and how some standard-library classes provide multiple constructors. Với kiến thức này, bây giờ bạn có thể thêm gia vị cho các lớp học của mình với nhiều nhà xây dựng, trang bị cho họ một số cách để giải quyết quá trình khởi tạo trong Python. Chúng ta có thể tạo nhiều đối tượng cho lớp đơn trong Python không?Một định nghĩa lớp duy nhất có thể được sử dụng để tạo nhiều đối tượng.Như đã đề cập trước đây, các đối tượng là độc lập.
Bạn có thể tạo nhiều đối tượng một lớp không?Một chương trình có thể tạo ra nhiều đối tượng của cùng một lớp.Các đối tượng còn được gọi là các thể hiện và chúng có thể được lưu trữ trong một biến được đặt tên hoặc trong một mảng hoặc bộ sưu tập.Mã máy khách là mã sử dụng các biến này để gọi các phương thức và truy cập các thuộc tính công khai của đối tượng.. Objects are also called instances, and they can be stored in either a named variable or in an array or collection. Client code is the code that uses these variables to call the methods and access the public properties of the object. |