Giá trị đối tượng python vào danh sách

chúng tôi biết rằng cả ab đều đề cập đến một chuỗi, nhưng chúng tôi không biết liệu chúng có đề cập đến cùng một chuỗi hay không. Có hai trạng thái có thể xảy ra

Trong một trường hợp, ab đề cập đến hai đối tượng khác nhau có cùng giá trị. Trong trường hợp thứ hai, chúng đề cập đến cùng một đối tượng

Để kiểm tra xem hai biến có tham chiếu đến cùng một đối tượng hay không, bạn có thể sử dụng toán tử is

Q-2. Toán tử nào có thể được sử dụng để xem liệu hai biến có tham chiếu đến cùng một đối tượng không?

Trong ví dụ này, Python chỉ tạo một đối tượng chuỗi và cả ab đều đề cập đến nó

Nhưng khi bạn tạo hai danh sách, bạn sẽ có hai đối tượng

Trong trường hợp này, chúng tôi sẽ nói rằng hai danh sách là tương đương, bởi vì chúng có các phần tử giống nhau, nhưng không giống nhau, bởi vì chúng không phải là cùng một đối tượng. Nếu hai đối tượng giống hệt nhau thì chúng cũng tương đương nhau, nhưng nếu chúng tương đương nhau thì chúng không nhất thiết phải giống nhau

Q-4. Khi hai danh sách có các phần tử giống nhau, nhưng là các đối tượng khác nhau, chúng ta nói chúng là __________

Cho đến bây giờ, chúng ta đã sử dụng thay thế cho “đối tượng” và “giá trị”, nhưng nói chính xác hơn là một đối tượng có giá trị. Nếu bạn thực thi a = [1,2,3], thì a đề cập đến một đối tượng danh sách có giá trị là một chuỗi các phần tử cụ thể. Nếu một danh sách khác có cùng các phần tử, chúng tôi sẽ nói rằng nó có cùng giá trị

Mẫu mã tìm đối tượng đầu tiên trong danh sách đáp ứng một điều kiện. Nếu bạn cần tìm tất cả các đối tượng đáp ứng một điều kiện nhất định trong danh sách, hãy cuộn xuống tiêu đề phụ tiếp theo

Chúng tôi đã sử dụng một biểu thức trình tạo để lặp qua danh sách các đối tượng

Biểu thức trình tạo được sử dụng để thực hiện một số thao tác cho mọi phần tử hoặc chọn một tập hợp con các phần tử đáp ứng một điều kiện

Trên mỗi lần lặp, chúng tôi kiểm tra xem đối tượng hiện tại có thuộc tính name1 bằng với name2 hay không và nếu điều kiện được đáp ứng, chúng tôi sẽ thêm đối tượng vào danh sách name8

Sử dụng hàm dir[] để lấy tất cả các thuộc tính của một đối tượng, e. g. print[dir[object]]. Hàm dir sẽ trả về danh sách các thuộc tính hợp lệ của đối tượng được cung cấp

Hàm lấy một đối tượng và trả về một danh sách chứa các thuộc tính của đối tượng

Nếu bạn truyền một lớp cho hàm, nó sẽ trả về một danh sách tên của các thuộc tính của lớp và đệ quy thuộc tính của các lớp cơ sở của nó

Nếu bạn cần in đẹp các thuộc tính của đối tượng, hãy sử dụng phương thức pprint[]

Phương thức in biểu diễn được định dạng của một đối tượng

Nếu bạn cần lấy từng thuộc tính và giá trị của nó, hãy sử dụng hàm getattr[]

class Person[]:
    def __init__[self, first, last, age]:
        self.first = first
        self.last = last
        self.age = age


bobby = Person['bobby', 'hadz', 30]

for attribute in dir[bobby]:
    print[attribute, getattr[bobby, attribute]]

Hàm trả về giá trị của thuộc tính được cung cấp của đối tượng

Hàm lấy đối tượng, tên của thuộc tính và giá trị mặc định khi thuộc tính không tồn tại trên đối tượng làm tham số

Nếu bạn cần lấy thuộc tính và giá trị của đối tượng, hãy sử dụng thuộc tính __dict__

Thuộc tính __dict__ trả về một từ điển chứa các thuộc tính và giá trị của đối tượng

Bạn có thể sử dụng các phương thức dict.keys[]dict.values[] nếu bạn chỉ cần thuộc tính hoặc giá trị của đối tượng

Nếu bạn cần định dạng các thuộc tính của đối tượng thành một chuỗi, hãy sử dụng phương thức dir[]0 và một chuỗi ký tự được định dạng

Phương thức lấy một iterable làm đối số và trả về một chuỗi là chuỗi nối của các chuỗi trong iterable

Chuỗi mà phương thức được gọi được sử dụng làm dấu phân cách giữa các phần tử

Các chuỗi ký tự được định dạng [chuỗi f] cho phép chúng tôi bao gồm các biểu thức bên trong chuỗi bằng cách thêm tiền tố vào chuỗi bằng dir[]1

Python là một ngôn ngữ lập trình hướng đối tượng. Trên thực tế, mọi thứ trong Python đều là một đối tượng [thậm chí là một lớp]. Mỗi đối tượng có một số thuộc tính được liên kết với chúng. Bây giờ, để làm việc tốt với bất kỳ đối tượng nào, bạn phải biết về các thuộc tính của nó

Do đó, trong bài viết này, chúng ta sẽ thảo luận về các đối tượng, thuộc tính và cách in các thuộc tính của các đối tượng này trong Python. Vậy hãy bắt đầu

Đối tượng trong Python là gì?

Một đối tượng là một thể hiện của một lớp. Nó thường được coi là một thực thể trong thế giới thực. Một đối tượng có thể cấu thành các thuộc tính, dữ liệu [hoặc] và một vài phương thức để thao tác trên dữ liệu đó. Nó là cần thiết để khởi tạo một lớp. Mỗi đối tượng có một bản sắc duy nhất

Chẳng hạn, coi loài người là một giai cấp. Vì vậy, mỗi con người sẽ có tên, tuổi, cân nặng, chiều cao và nhiều thuộc tính khác. Mỗi người có thể được xác định duy nhất như một đối tượng, [bao gồm tôi, bạn, bạn của bạn hoặc bất kỳ người nào khác mà bạn biết. ]

Hãy lấy một ví dụ về cách khai báo một đối tượng trong Python

# defining class human
class human:
    def __init__[self, name, age]:
        self.name = name
        self.age = age


# creating an instance of class human
human1 = human["Mradula", 20]
human2 = human["Jennifer", 24]

# accessing object
print["Human1 : ", human1.name]

 

Lưu ý rằng các biến tên và tuổi là thuộc tính của các đối tượng của lớp 'con người'

đầu ra

Human1 :  Mradula

 

Ví dụ trên hiển thị cách một đối tượng được tạo [đối với lớp do người dùng định nghĩa] và được truy cập trong Python. Chúng tôi cũng đã khai báo các thuộc tính của đối tượng [ở đây, con người1 & con người2] và truy cập chúng

Bây giờ, chúng ta nên xem xét kỹ hơn các thuộc tính của một đối tượng

Thuộc tính trong Python là gì?

Một thuộc tính có thể được định nghĩa là thuộc tính của một lớp hoặc một đối tượng. Đây là các thành viên dữ liệu bên trong một lớp [hoặc đối tượng] đại diện cho các tính năng của chúng. Các thuộc tính này có thể là các thuộc tính [trạng thái hoặc giá trị] xác định một đối tượng hoặc bất kỳ phương thức nào tác động lên đối tượng đó

Chẳng hạn, hãy lấy ví dụ trước của chúng ta. lớp người. Các biến tên và tuổi được khai báo trong lớp con người thực ra là 'thuộc tính' của 'con người'. Cùng với chúng, các hành động [chức năng] như chạy, ngủ, đọc, đi bộ và bơi lội cũng là thuộc tính của 'con người'.  

Bạn có thể nhầm lẫn giữa một thuộc tính và một đối tượng. Sự khác biệt giữa một đối tượng và một thuộc tính là Một đối tượng là một thực thể trong thế giới thực trong khi một thuộc tính là một đặc điểm của đối tượng đó

Các thuộc tính này thường được định nghĩa trong một lớp và được chia sẻ giữa tất cả các thể hiện [đối tượng] của lớp đó. Một đối tượng có thể được truy cập bằng các thuộc tính này

Thuộc tính cũng được phân thành hai loại

  1. Thuộc tính lớp
  2. Instance [đối tượng] Thuộc tính

Một thuộc tính Instance là một thành viên dữ liệu của một đối tượng. Nó được liên kết với các thuộc tính của một đối tượng. Vì vậy, mọi phiên bản của lớp đó sẽ có các thuộc tính phiên bản giống nhau. [Đó là mục đích của một lớp học, sau tất cả. ]. Phạm vi truy cập của họ cũng nằm trong việc tạo đối tượng

Ví dụ: tham khảo các biến 'tên' và 'tuổi' của lớp 'con người'. Đây là các biến thể hiện, được phân bổ cho từng đối tượng riêng biệt

Class Attributes là thành viên dữ liệu của cả lớp. Các thuộc tính này chia sẻ cùng một không gian bộ nhớ và được tất cả các đối tượng truy cập chung

Để tìm hiểu thêm về các thuộc tính, hãy xem bài viết của chúng tôi về các biến tĩnh trong python

Bây giờ chúng ta đã tìm hiểu về các đối tượng và thuộc tính, chúng ta đã sẵn sàng tìm hiểu cách in tất cả các thuộc tính của một đối tượng trong Python

4 cách để in tất cả các thuộc tính của một đối tượng trong Python

Để viết mã hiệu quả và truy cập vào một đối tượng để có được chức năng đầy đủ của nó, người ta phải nhận thức được tất cả các thuộc tính của đối tượng. Do đó, đưa ra dưới đây là các cách khác nhau để in tất cả các thuộc tính của một đối tượng trong Python

01] Sử dụng phương thức __dir__[]

Python cung cấp một phương thức dựng sẵn để in ra tất cả các thuộc tính của một đối tượng [Bây giờ, đối tượng này có thể là bất kỳ thứ gì trong Python]. Phương thức này còn được gọi là phương thức ma thuật hoặc phương thức dunder trong Python

cú pháp

in [tên đối tượng. __dir__[]]

Hãy chuyển sang một ví dụ để hiểu rõ hơn

# listing out all attributes of an object in Python
# create a class
class Student:
    def __init__[self, name, id, age]:
        self.name = name
        self.id = id
        self.age = age

    def info[self]:
        return f"Student name: {self.name} and id: {self.id} "

    # class variable
    var = 1


# creating object
s1 = Student["Mradula", 1, 20]
s2 = Student["Joel", 2, 15]
print[s1.info[]]
print[s1.__dir__[]]

 

đầu ra

Student name: Mradula and id: 1
['name', 'id', 'age', '__module__', '__init__', 'info', 'var', '__dict__', '__weakref__', '__doc__', '__repr__', '__hash__', '__str__', '__getattribute__', '__setattr__', '__delattr__', '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__new__', '__reduce_ex__', '__reduce__', '__subclasshook__', '__init_subclass__', '__format__', '__sizeof__', '__dir__', '__class__']

 

Lưu ý rằng phương thức này trả về một danh sách với các thuộc tính do người dùng xác định được ưu tiên

Bạn sẽ ngạc nhiên khi biết rằng, phương thức __dir__[] cũng có thể được sửa đổi. Bạn có thể định nghĩa phương thức __dir__[] trong một lớp để ghi đè phương thức __dir__[] mặc định. Hãy sửa đổi phương thức __dir__[] cho ví dụ trên

# listing out all attributes of an object in Python
# create a class
class Student:
    # defining the __dir__[] method
    def __dir__[self]:
        return [1, 2, 10, 5, 9]

    # class variable
    var = 1

# creating object
s = Student[]
# calling the __dir__[] method
print[s.__dir__[]]

 

đầu ra

[1, 2, 10, 5, 9]

 

các s. Câu lệnh __dir__[] gọi phương thức do người dùng định nghĩa sẽ ghi đè phương thức dunder mặc định. Lưu ý sự khác nhau giữa đầu ra của phương thức __dir__[] mặc định và phương thức __dir__[] do người dùng định nghĩa

02] Sử dụng dir[]

Python cung cấp một hàm dựng sẵn để liệt kê tất cả các thuộc tính của một đối tượng. Hàm này trả về tất cả các thuộc tính [biến, phương thức hoặc đối tượng] được liên kết với tham số đã truyền, trong một phạm vi nhất định

cú pháp

in [dir [tham số]]

Việc chuyển tham số là tùy chọn. Nếu bạn không truyền tham số, thì hàm dir[] sẽ trả về tất cả các thuộc tính trong phạm vi cục bộ

Hãy lấy một ví dụ

# listing out all attributes of an object in Python
name = "FavTutor"
article = "Printing Object's attributes"

# calling dir[] function with no argument
print[dir[]]

 

đầu ra

________số 8_______

 

Thấy. Hàm dir[] trả về tất cả các thuộc tính có sẵn và do người dùng xác định trong phạm vi cục bộ

Mặc dù ví dụ trên có một danh sách nhỏ, đôi khi đầu ra đủ dài để có khả năng đọc thấp. Để giải quyết vấn đề này, Python cung cấp một mô-đun pprint

"Mô-đun pprint" được sử dụng để in danh sách theo cách được định dạng tốt. Hãy xem ví dụ dưới đây

Thí dụ. Để in các thuộc tính của các đối tượng trong Python bằng cách sử dụng hàm dir[] với một đối tượng làm đối số

# listing out all attributes of an object in Python
# importing pprint module
from pprint import pprint

# create a class
class Student:
    def __init__[self, name, id] -> None:
        self.name = name
        self.id = id

    def info[self]:
        return f"Student name: {self.name} and id: {self.id} "

    # class variable
    var = 1


# creating object
s1 = Student["Mradula", 1]
print[s1.info[]]

# List out all attributes of the object using pprint[]
pprint[dir[s1]]

 

đầu ra

Student name: Mradula and id: 1
['__class__',
 '__delattr__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__le__',
 '__lt__',
 '__module__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__',
 'id',
 'info',
 'name',
 'var']

 

Phương thức pprint[] liên quan trực tiếp đến "bản in đẹp". Lưu ý cách mỗi tính năng được in trên một dòng riêng biệt. Điều này cải thiện khả năng đọc của đầu ra
Bây giờ chúng ta đã thấy một số ví dụ về dir[], hãy xem qua một số điểm chính về hàm dir[]

  1. Nó trả về một danh sách tất cả các đặc điểm của một đối tượng trong phạm vi cục bộ
  2. Nó gọi hàm __dir__[] bên trong. Bên trong, hàm dir[] thực hiện chức năng của nó thông qua phương thức __dir__[]
  3. Hàm dir[] cung cấp đầu ra được sắp xếp theo thứ tự bảng chữ cái

Trước khi chuyển sang phương thức tiếp theo, hãy so sánh các phương thức dir[] và __dir__[]

Làm việc với hàm dir[] và phương thức __dir__[]

a. Bạn đã biết rằng hàm dir[] gọi nội bộ phương thức __dir__[] để triển khai. Do đó, việc xác định phương thức __dir__[] cũng sẽ thay đổi chức năng [và do đó là đầu ra] của hàm dir[]. Hãy lấy ví dụ trên và gọi phương thức dir[]

Human1 :  Mradula
0

 

đầu ra

Human1 :  Mradula
1

 

Lưu ý sự khác biệt giữa các đầu ra được trả về bởi hàm dir[] và phương thức __dir__[]. Trong khi phương thức __dir__[] cung cấp danh sách nguyên trạng đã xác định, thì hàm dir[] tạo danh sách thuộc tính được sắp xếp

b. Bây giờ hãy lấy một ví dụ khác về sửa đổi phương thức __dir__[]. Bạn sẽ ngạc nhiên bởi kết quả.  

Human1 :  Mradula
2

 

đầu ra

Human1 :  Mradula
3

 

Phương thức __dir__[] hoạt động tốt nhưng hàm dir[] tạo ra TypeError. Chắc hẳn bạn đang thắc mắc TẠI SAO

Mã đã hoạt động cho ví dụ trước, phải không? . Do đó, vì các loại, chuỗi ["alice"] và số nguyên [1,2 và phần còn lại], không thể so sánh với nhau, do đó, việc gọi phương thức dir[] trên phương thức này sẽ tạo ra lỗi

Ghi chú. Hàm dir[], khi không có phương thức __dir__[], sẽ gọi thuộc tính __dict__ để trả về danh sách tất cả các thuộc tính của một đối tượng trong Python

03] Sử dụng hàm vars[]

Python cung cấp hàm vars[] trả về một 'từ điển' của tất cả các thuộc tính của phiên bản cùng với các giá trị của chúng. Nó tương tự như các phương thức trên, điểm khác biệt duy nhất là vars[] chỉ tập trung vào các thuộc tính thể hiện và cũng trả về các giá trị của chúng cùng với chúng

cú pháp

in[vars[objectName]]

Truyền bất kỳ tham số nào cho hàm vars[] là tùy chọn. Nó cũng có thể được gọi mà không truyền bất kỳ tham số nào cho nó

Hãy lấy một vài ví dụ để hiểu các trường hợp khác nhau

a. Không truyền bất kỳ tham số nào

Human1 :  Mradula
4

 

đầu ra

Human1 :  Mradula
5

 

Lưu ý cách mỗi thuộc tính được theo sau bởi giá trị của nó

b. Truyền tham số cho hàm vars[]

Human1 :  Mradula
6

 

đầu ra

Human1 :  Mradula
7

 

Khi đối tượng [ở đây là s] được truyền dưới dạng đối số cho phương thức vars[], nó sẽ tạo ra một từ điển chỉ các thuộc tính được liên kết với thể hiện, loại bỏ các thuộc tính còn lại [như trong ví dụ trên]

Ngoài ra, lưu ý rằng hàm vars[] gọi bên trong thuộc tính __dict__ để triển khai. Thuộc tính __dict__ đơn giản là một từ điển chứa tất cả các thuộc tính của đối tượng đó

Hãy xem đầu ra khi chúng ta sử dụng thuộc tính __dict__ trong ví dụ trên

Human1 :  Mradula
8

 

đầu ra

Human1 :  Mradula
9

 

Đầu ra là như nhau. [Do đó, hãy nhớ rằng hàm vars[] sẽ tạo ra lỗi khi chuyển qua một đối tượng không có thuộc tính __dir__. ]

04] Sử dụng module kiểm tra

Mô-đun kiểm tra trong Python giúp kiểm tra một số mô-đun hoặc đối tượng có trong mã. Nó bao gồm một số hàm hữu ích cung cấp thông tin về các đối tượng trực tiếp [như lớp, hàm, đối tượng và phương thức]. Nó có thể được sử dụng để có được một phân tích về các đối tượng, ví dụ, để kiểm tra nội dung của một lớp hoặc để hiển thị thông tin về một đối tượng

Để in tất cả các thuộc tính của một đối tượng trong Python, bạn có thể sử dụng chức năng 'getmembers[]' của mô-đun kiểm tra. Hàm này trả về danh sách bộ chứa các thuộc tính cùng với giá trị của chúng

Tham khảo hình ảnh bên dưới để dễ đọc hơn về đầu ra

Hãy lấy một ví dụ để hiểu rõ hơn

# listing out all attributes of an object in Python
# create a class
class Student:
    def __init__[self, name, id, age]:
        self.name = name
        self.id = id
        self.age = age

    def info[self]:
        return f"Student name: {self.name} and id: {self.id} "

    # class variable
    var = 1


# creating object
s1 = Student["Mradula", 1, 20]
s2 = Student["Joel", 2, 15]
print[s1.info[]]
print[s1.__dir__[]]
0

 

Tôi đã sử dụng mô-đun pprint để tăng khả năng đọc đầu ra

đầu ra

# listing out all attributes of an object in Python
# create a class
class Student:
    def __init__[self, name, id, age]:
        self.name = name
        self.id = id
        self.age = age

    def info[self]:
        return f"Student name: {self.name} and id: {self.id} "

    # class variable
    var = 1


# creating object
s1 = Student["Mradula", 1, 20]
s2 = Student["Joel", 2, 15]
print[s1.info[]]
print[s1.__dir__[]]
1

 

Lưu ý rằng danh sách này chứa các bộ dữ liệu theo thứ tự được sắp xếp. Vì vậy, hàm getmembers[] trả về một danh sách được sắp xếp gồm tất cả các thuộc tính của một đối tượng trong Python, cùng với các giá trị tương ứng của chúng

Phần kết luận

Cho đến giờ chúng ta đã thảo luận về các cách khác nhau để in tất cả các thuộc tính của một đối tượng trong Python. Nhưng trước khi chuyển sang liệt kê tất cả các thuộc tính, bạn phải có khả năng phân biệt giữa thuộc tính thể hiện và thuộc tính lớp. Vì vậy, hãy thử và kiểm tra các phương pháp này cùng với các biến thể của chúng để hiểu rõ hơn về chúng

Chủ Đề