Hướng dẫn python modify object attribute - thuộc tính đối tượng sửa đổi python

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2022 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.
W3Schools is Powered by W3.CSS.

Nội dung chính ShowShow

  • Điều gì xảy ra tại dấu chấm.
  • Giới thiệu
  • Ví dụ 1: Dunder __setattr_, __delattr__
  • Dunder __setattr__
  • Các cách khác để kiểm soát các thuộc tính trong một đối tượng
  • Sử dụng trang trí
  • Ví dụ 2: Sử dụng máy trang trí @staticmethod
  • Ví dụ 3: Sử dụng một người trang trí tùy chỉnh
  • Ví dụ 4: Sử dụng các trình trang trí/setter/deleter/setter/deleter
  • Ví dụ 5: Kiểm tra có điều kiện trong hàm tạo init
  • Bản tóm tắt
  • Làm thế nào để bạn thay đổi các thuộc tính trong Python?
  • Làm thế nào để bạn thay đổi các thuộc tính của một đối tượng?
  • Làm thế nào để bạn thêm các thuộc tính trong Python?
  • Làm thế nào để bạn sử dụng các thuộc tính trong Python?

Điều gì xảy ra tại dấu chấm.

Giới thiệu

Ví dụ 1: Dunder __setattr_, __delattr__

Dunder __setattr__

Các cách khác để kiểm soát các thuộc tính trong một đối tượng

Sử dụng trang trí

Ví dụ 1: Dunder __setattr_, __delattr__

Dunder __setattr__

Các cách khác để kiểm soát các thuộc tính trong một đối tượng

  1. Sử dụng trang trí
  2. Ví dụ 2: Sử dụng máy trang trí @staticmethod
  3. Ví dụ 3: Sử dụng một người trang trí tùy chỉnh
  4. Ví dụ 4: Sử dụng các trình trang trí/setter/deleter/setter/deleter

Dunder __setattr__

Các cách khác để kiểm soát các thuộc tính trong một đối tượng

Sử dụng trang trí

Ví dụ 2: Sử dụng máy trang trí @staticmethod

Đối với cả ‘_age, và các thuộc tính‘ _service_length, chúng tôi kiểm tra chúng thuộc loại int, sử dụng hàm python isinstance tích hợp. Nếu chúng thuộc bất kỳ loại nào ngoài INT, một ngoại lệ kiểu kiểu sẽ được nâng lên.

Cuối cùng, hãy để địa chỉ điểm 4 và thực hiện mã để ngăn chặn việc xóa thuộc tính tên. Để tranh luận, giả sử rằng, một khi tên đã được đặt, nó không thể bị xóa và tồn tại vĩnh viễn.

Do đó, khi chúng tôi cố gắng xóa thuộc tính tên khỏi đối tượng của chúng tôi, một ngoại lệ thuộc tính sẽ được nêu ra, thông báo cho người dùng, rằng thuộc tính không thể bị xóa. Dưới mui xe, từ khóa DEL gọi phương thức __delattr__. Vì chúng tôi đã xác định nó trong lớp của chúng tôi, nó sẽ gọi phiên bản tùy chỉnh của chúng tôi là __delattr__. Tuy nhiên, chúng tôi sẽ vẫn cho phép hành vi cho phép xóa bất kỳ thuộc tính nào khác.

Để lưu ý, trong các đoạn mã được hiển thị, chúng tôi đã đặt và xóa các thuộc tính như được hiển thị bên dưới để tránh các lỗi đệ quy.

Mã cho lớp nhân viên của chúng tôi được hiển thị bên dưới thông qua GITHUB GIST và có sẵn thông qua liên kết này.

Để kiểm tra hành vi tùy chỉnh mà chúng tôi đã thực hiện, hãy tạo một thể hiện của lớp nhân viên và kiểm tra xem có thể đặt thuộc tính tên hay không, không thể được đặt lại và không thể xóa. Ngoài ra, chúng tôi có thể kiểm tra loại thuộc tính độ tuổi và độ dài dịch vụ.

Thiết lập lại thuộc tính tên không thành công và thông báo cho người dùng tại sao chương trình chấm dứt.

Khi chúng ta lặp qua từ điển của các thuộc tính và in loại của chúng, chúng ta có thể thấy độ tuổi và độ dài của dịch vụ thuộc loại int.

Cuối cùng, khi chúng tôi cố gắng xóa tên thuộc tính, một ngoại lệ thuộc tính được nêu ra, với thông báo chuỗi thông báo cho người dùng rằng thuộc tính không thể bị xóa.

Bây giờ chúng tôi đã thành công trong việc ban hành hành vi tùy chỉnh mà chúng tôi mong muốn. Mặc dù các ví dụ này được tạo ra, chúng minh họa cách chúng ta có thể kiểm soát các thuộc tính bằng các phương thức SETATTR và DELATTR trong Python. Nếu bạn muốn thử các ví dụ được hiển thị, toàn bộ mã có sẵn thông qua liên kết này.

Các cách khác để kiểm soát các thuộc tính trong một đối tượng

Các ví dụ sau đại diện cho các cách khác để kiểm soát các thuộc tính trong Python. Là một điều kiện, tôi không chứng thực chúng là cách tốt nhất để kiểm soát các thuộc tính, thay vào đó là các lựa chọn thay thế có nghĩa là có thể thêm vào kho công cụ của bạn để sử dụng trong Python.

Phần để theo dõi sẽ giới thiệu một hướng dẫn LED ví dụ để sử dụng các nhà trang trí để quản lý các thuộc tính.

Sử dụng trang trí

Ví dụ 2: Sử dụng máy trang trí @staticmethod

Đối với tính liên tục, cùng một lớp nhân viên sẽ được khởi tạo trong các ví dụ về thủ tục tố tụng. Ở đây, bộ trang trí staticmethod có thể được sử dụng để kiểm tra giá trị thuộc tính trong một đối tượng. Cụ thể, ở đây, chúng tôi muốn cả hai giá trị thuộc tính AGE và Service_length là loại int.

Để làm điều này, chúng ta có thể xác định phương thức data_type_check trong lớp của chúng ta và trang trí nó với bộ trang trí staticmethod. Khi các thuộc tính đang được đặt trong hàm tạo init, chúng tôi gọi phương thức data_type_check trên đối tượng của chúng tôi và chuyển theo độ tuổi hoặc dịch vụ_lengm làm đối số. Nếu tuổi và độ dài dịch vụ thuộc loại int, chúng sẽ được trả lại và đặt làm thuộc tính trong đối tượng của chúng tôi. Nếu chúng không thuộc loại Int, ngoại lệ lỗi loại sẽ được nêu ra.

Một điều thực sự tốt đẹp khi sử dụng bộ trang trí Staticmethod, là khả năng tái sử dụng của nó. Ví dụ, nếu chúng tôi đã thêm một đối số tiền thưởng hàng năm vào phương thức INIT của chúng tôi, chúng tôi chỉ có thể gọi cho bộ trang trí StaticMethod một lần nữa và chuyển phần thưởng như một đối số.

Ví dụ 3: Sử dụng một người trang trí tùy chỉnh

Một cách khác để kiểm soát giá trị của các thuộc tính là thông qua một bộ trang trí tùy chỉnh. Để phù hợp với chủ đề của chúng tôi, hãy tạo cùng một lớp, nhưng lần này trang trí phương thức xây dựng init, với một hàm gọi là attr_check.

Khi chúng tôi tạo một thể hiện của lớp nhân viên của chúng tôi, phương thức INIT sẽ được gọi tự động. Khi hàm attr_check trang trí phương pháp init, hàm này sẽ được gọi. attr_check sẽ lấy phương thức init làm đối số và trả lại bên trong. Khi chúng tôi gọi bên trong với đối tượng, tuổi và dịch vụ của chúng tôi, chúng tôi có thể thực hiện kiểm tra loại trên cả độ tuổi và dịch vụ. Nếu tuổi và dịch vụ thuộc loại int, chúng tôi sẽ trả về phương thức init ban đầu với đối tượng, tên, tuổi và dịch vụ và đối số.

Việc triển khai này là một cách tốt đẹp để kiểm soát các giá trị thuộc tính trong Python vì chúng ta có thể chọn những gì đi vào cơ thể bên trong. Trong trường hợp này, chúng tôi đã không thực hiện bất kỳ loại kiểm tra nào trên tên hoặc bất kỳ khoản phụ cấp nào trong độ tuổi, nhưng chúng tôi chỉ có thể thêm các kiểm tra này, bằng cách mở rộng mã được xác định trong hàm bên trong.

Ví dụ 4: Sử dụng các trình trang trí/setter/deleter/setter/deleter

Tuy nhiên, một cách khác để kiểm soát các giá trị thuộc tính trong Python là thông qua việc sử dụng trình trang trí thuộc tính và các phương thức setter và deleter tương ứng của nó.

Hãy tạo lớp nhân viên của chúng tôi một lần nữa. Khi người dùng cố gắng truy cập thuộc tính tên thông qua cú pháp.

Lần này nếu người dùng muốn thay đổi thuộc tính tên, hãy đảm bảo bất kỳ chuỗi nào họ nhập sẽ được viết hoa. Chúng ta có thể đạt được điều này bằng cách xác định một phương thức tên đơn giản cùng với các phương thức setter và deleter tương ứng.

Chúng tôi xác định phương thức tên và trang trí nó với @name.setter. Khi người dùng muốn đặt tên mới, sử dụng cú pháp đối tượng.Attribution, tên mới được đặt trong đối tượng giờ đây sẽ được viết hoa.

Lưu ý, tên cơ bản của thuộc tính tên ‘_name, khác với tên của phương thức để tránh các lỗi đệ quy. Chúng ta không thể có bản thân.name = new_name.title () trong phần thân của phương thức setter của chúng tôi.

Ví dụ 5: Kiểm tra có điều kiện trong hàm tạo init

Để hoàn thành bài viết này về kiểm soát thuộc tính, cách đơn giản nhất để thực hiện tính toàn vẹn thuộc tính, trên thực tế, có thể bao gồm kiểm tra có điều kiện trong hàm tạo init của chính lớp chúng tôi. Ở đây, chúng tôi cho phép tuổi của nhân viên lớn hơn hoặc bằng 18 và nhỏ hơn hoặc bằng 100. Nếu điều kiện được thỏa mãn, chúng tôi có thể đặt tuổi được cung cấp như một đối số trong phương thức init làm giá trị thuộc tính trong Đối tượng của chúng tôi. Khi một thể hiện được tạo ra không đáp ứng điều kiện này, một ngoại lệ thuộc tính được nêu ra, với một thông báo chuỗi hữu ích thông báo cho người dùng về các điều kiện cần thiết.

Bản tóm tắt

Cảm ơn bạn đã đọc, và tôi hy vọng bạn thích các cách khác nhau để kiểm soát quyền truy cập thuộc tính và giá trị của chúng. Mặc dù tôi chủ yếu tập trung vào việc kiểm tra và phụ cấp phạm vi loại dữ liệu, nhưng bất kỳ điều kiện có thể tưởng tượng nào cũng có thể được áp đặt trên một giá trị thuộc tính. Một địa chỉ email có thể trải qua xác thực bằng Regex trước khi được đặt, để tuân thủ tính toàn vẹn của dữ liệu.

Tôi đã cố tình sử dụng các ví dụ cơ bản ở đây để giúp truyền đạt cách nhiều cách để kiểm soát các giá trị thuộc tính và truy cập hoạt động. Hơn nữa, các mô tả là một cách khác để quản lý các thuộc tính trong Python và tôi hy vọng sẽ viết một phần hướng dẫn về cách sử dụng chúng. Nếu bạn có bất kỳ câu hỏi nào, hoặc muốn có nhiều bài viết theo chủ đề xung quanh chủ đề này, hãy cho tôi biết qua LinkedIn.

Cách sử dụng SetAttr () để thêm thuộc tính mới vào một lớp trong Python. Nếu bạn muốn thêm một trường mới vào lớp, bạn có thể sử dụng phương thức setAttr () có cùng cú pháp. SetAttr () thêm một biến mới trong một lớp hiện có và đặt dữ liệu đã nêu khi biến đã cho không xảy ra trong lớp.Use the setattr() to Add a New Attribute to a Class in Python. If you want to add a new field to the class, you may use the setattr() method with the same syntax. The setattr() adds a new variable in an existing class and sets the stated data when the given variable doesn't occur in the class.Use the setattr() to Add a New Attribute to a Class in Python. If you want to add a new field to the class, you may use the setattr() method with the same syntax. The setattr() adds a new variable in an existing class and sets the stated data when the given variable doesn't occur in the class.

Thêm các thuộc tính vào một lớp Python rất thẳng về phía trước, bạn chỉ cần sử dụng '.'toán tử sau một phiên bản của lớp với bất kỳ tên tùy ý nào bạn muốn thuộc tính được gọi, theo sau là giá trị của nó.use the '.' operator after an instance of the class with whatever arbitrary name you want the attribute to be called, followed by its value.use the '. ' operator after an instance of the class with whatever arbitrary name you want the attribute to be called, followed by its value.

Các thuộc tính của một lớp cũng có thể được truy cập bằng các phương thức và hàm tích hợp sau: getAttr ()-hàm này được sử dụng để truy cập thuộc tính của object.hasAttr ()-hàm này được sử dụng để kiểm tra xem thuộc tính có tồn tại hay không.setAttr () - Hàm này được sử dụng để đặt thuộc tính.getattr() – This function is used to access the attribute of object.hasattr() – This function is used to check if an attribute exist or not.setattr() – This function is used to set an attribute.getattr() – This function is used to access the attribute of object. hasattr() – This function is used to check if an attribute exist or not. setattr() – This function is used to set an attribute.