Hướng dẫn what is meant by instance of a class in python? - thể hiện của một lớp trong python có nghĩa là gì?


Python đã là một ngôn ngữ hướng đối tượng kể từ khi nó tồn tại. Bởi vì điều này, việc tạo và sử dụng các lớp và đối tượng là hết sức dễ dàng. Chương này giúp bạn trở thành một chuyên gia trong việc sử dụng hỗ trợ lập trình hướng đối tượng của Python.

Nếu bạn không có bất kỳ kinh nghiệm nào trước đây với lập trình hướng đối tượng (OO), bạn có thể muốn tham khảo một khóa học giới thiệu về nó hoặc ít nhất là một hướng dẫn nào đó để bạn nắm bắt được các khái niệm cơ bản.

Tuy nhiên, đây là sự giới thiệu nhỏ của lập trình hướng đối tượng (OOP) để đưa bạn ở tốc độ-

Tổng quan về thuật ngữ OOP

  • Lớp-Một nguyên mẫu do người dùng xác định cho một đối tượng xác định một tập hợp các thuộc tính đặc trưng cho bất kỳ đối tượng nào của lớp. Các thuộc tính là các thành viên dữ liệu (biến lớp và biến thể hiện) và các phương thức, được truy cập thông qua ký hiệu DOT. − A user-defined prototype for an object that defines a set of attributes that characterize any object of the class. The attributes are data members (class variables and instance variables) and methods, accessed via dot notation.

  • Biến lớp - một biến được chia sẻ bởi tất cả các trường hợp của một lớp. Các biến lớp được xác định trong một lớp nhưng ngoài bất kỳ phương thức nào của lớp. Các biến lớp không được sử dụng thường xuyên như các biến thể hiện. − A variable that is shared by all instances of a class. Class variables are defined within a class but outside any of the class's methods. Class variables are not used as frequently as instance variables are.

  • Thành viên dữ liệu - một biến lớp hoặc biến thể hiện chứa dữ liệu được liên kết với một lớp và các đối tượng của nó. − A class variable or instance variable that holds data associated with a class and its objects.

  • Quá tải chức năng - gán nhiều hơn một hành vi cho một hàm cụ thể. Hoạt động được thực hiện thay đổi theo các loại đối tượng hoặc đối số liên quan. − The assignment of more than one behavior to a particular function. The operation performed varies by the types of objects or arguments involved.

  • Biến trường hợp - một biến được xác định bên trong một phương thức và chỉ thuộc về thể hiện hiện tại của một lớp. − A variable that is defined inside a method and belongs only to the current instance of a class.

  • Kế thừa - chuyển các đặc điểm của một lớp sang các lớp khác có nguồn gốc từ nó. − The transfer of the characteristics of a class to other classes that are derived from it.

  • Ví dụ - một đối tượng riêng lẻ của một lớp nhất định. Ví dụ, một đối tượng OBJ thuộc về một vòng tròn lớp là một thể hiện của vòng tròn lớp. − An individual object of a certain class. An object obj that belongs to a class Circle, for example, is an instance of the class Circle.

  • Instantiation - việc tạo ra một ví dụ của một lớp. − The creation of an instance of a class.

  • Phương pháp - một loại chức năng đặc biệt được xác định trong một định nghĩa lớp. − A special kind of function that is defined in a class definition.

  • Đối tượng - một thể hiện duy nhất của cấu trúc dữ liệu được xác định bởi lớp của nó. Một đối tượng bao gồm cả hai thành viên dữ liệu (biến lớp và biến thể hiện) và các phương thức. − A unique instance of a data structure that's defined by its class. An object comprises both data members (class variables and instance variables) and methods.

  • Toán tử quá tải - gán nhiều hơn một hàm cho một toán tử cụ thể. − The assignment of more than one function to a particular operator.

Tạo các lớp học

Tuyên bố lớp tạo ra một định nghĩa lớp mới. Tên của lớp ngay lập tức theo lớp từ khóa theo sau là một dấu hai chấm như sau -

class ClassName:
   'Optional class documentation string'
   class_suite
  • Lớp có một chuỗi tài liệu, có thể được truy cập thông qua ClassName .__ Doc__.

  • Class_Suite bao gồm tất cả các câu lệnh thành phần xác định các thành viên lớp, thuộc tính dữ liệu và chức năng.

Thí dụ

Sau đây là ví dụ về lớp Python đơn giản -

class Employee:
   'Common base class for all employees'
   empCount = 0

   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1
   
   def displayCount(self):
     print "Total Employee %d" % Employee.empCount

   def displayEmployee(self):
      print "Name : ", self.name,  ", Salary: ", self.salary
  • Biến empcount là một biến lớp có giá trị được chia sẻ giữa tất cả các trường hợp của lớp này. Điều này có thể được truy cập dưới dạng nhân viên.Empcount từ bên trong lớp hoặc bên ngoài lớp.

  • Phương thức đầu tiên __init __ () là một phương thức đặc biệt, được gọi là hàm tạo lớp hoặc phương thức khởi tạo mà Python gọi khi bạn tạo một thể hiện mới của lớp này.

  • Bạn tuyên bố các phương thức lớp khác như các hàm bình thường với ngoại lệ là đối số đầu tiên cho mỗi phương thức là bản thân. Python thêm lập luận tự vào danh sách cho bạn; Bạn không cần phải bao gồm nó khi bạn gọi các phương thức.

Tạo đối tượng thể hiện

Để tạo các phiên bản của một lớp, bạn gọi lớp bằng tên lớp và truyền trong bất kỳ đối số nào của phương thức __init__ của nó chấp nhận.

"This would create first object of Employee class"
emp1 = Employee("Zara", 2000)
"This would create second object of Employee class"
emp2 = Employee("Manni", 5000)

Truy cập các thuộc tính

Bạn truy cập các thuộc tính của đối tượng bằng toán tử DOT với đối tượng. Biến lớp sẽ được truy cập bằng tên lớp như sau -

emp1.displayEmployee()
emp2.displayEmployee()
print "Total Employee %d" % Employee.empCount

Bây giờ, đặt tất cả các khái niệm lại với nhau -

#!/usr/bin/python

class Employee:
   'Common base class for all employees'
   empCount = 0

   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1
   
   def displayCount(self):
     print "Total Employee %d" % Employee.empCount

   def displayEmployee(self):
      print "Name : ", self.name,  ", Salary: ", self.salary

"This would create first object of Employee class"
emp1 = Employee("Zara", 2000)
"This would create second object of Employee class"
emp2 = Employee("Manni", 5000)
emp1.displayEmployee()
emp2.displayEmployee()
print "Total Employee %d" % Employee.empCount

Khi mã trên được thực thi, nó sẽ tạo ra kết quả sau -

Name :  Zara ,Salary:  2000
Name :  Manni ,Salary:  5000
Total Employee 2

Bạn có thể thêm, xóa hoặc sửa đổi các thuộc tính của các lớp và đối tượng bất cứ lúc nào -

emp1.age = 7  # Add an 'age' attribute.
emp1.age = 8  # Modify 'age' attribute.
del emp1.age  # Delete 'age' attribute.

Thay vì sử dụng các câu lệnh thông thường để truy cập các thuộc tính, bạn có thể sử dụng các hàm sau -

  • GetAttr (obj, name [, mặc định]) - để truy cập thuộc tính của đối tượng.getattr(obj, name[, default]) − to access the attribute of object.

  • HasAttr (obj, tên) - để kiểm tra xem thuộc tính có tồn tại hay không.hasattr(obj,name) − to check if an attribute exists or not.

  • SetAttr (obj, tên, giá trị) - để đặt một thuộc tính. Nếu thuộc tính không tồn tại, thì nó sẽ được tạo ra.setattr(obj,name,value) − to set an attribute. If attribute does not exist, then it would be created.

  • Delattr (obj, tên) - để xóa một thuộc tính.delattr(obj, name) − to delete an attribute.

hasattr(emp1, 'age')    # Returns true if 'age' attribute exists
getattr(emp1, 'age')    # Returns value of 'age' attribute
setattr(emp1, 'age', 8) # Set attribute 'age' at 8
delattr(empl, 'age')    # Delete attribute 'age'

Thuộc tính lớp tích hợp

Mỗi lớp Python tiếp tục theo dõi các thuộc tính tích hợp và chúng có thể được truy cập bằng toán tử DOT như bất kỳ thuộc tính nào khác-

  • __dict__ - Từ điển chứa không gian tên của lớp. − Dictionary containing the class's namespace.

  • __doc__ - chuỗi tài liệu lớp hoặc không có, nếu không xác định. − Class documentation string or none, if undefined.

  • __name__ - tên lớp. − Class name.

  • __module__ - Tên mô -đun trong đó lớp được xác định. Thuộc tính này là "__main__" ở chế độ tương tác. − Module name in which the class is defined. This attribute is "__main__" in interactive mode.

  • __base__ - một tuple trống có thể chứa các lớp cơ sở, theo thứ tự xảy ra trong danh sách lớp cơ sở. − A possibly empty tuple containing the base classes, in the order of their occurrence in the base class list.

Đối với lớp trên, chúng tôi hãy cố gắng truy cập tất cả các thuộc tính này -

#!/usr/bin/python

class Employee:
   'Common base class for all employees'
   empCount = 0

   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1
   
   def displayCount(self):
     print "Total Employee %d" % Employee.empCount

   def displayEmployee(self):
      print "Name : ", self.name,  ", Salary: ", self.salary

print "Employee.__doc__:", Employee.__doc__
print "Employee.__name__:", Employee.__name__
print "Employee.__module__:", Employee.__module__
print "Employee.__bases__:", Employee.__bases__
print "Employee.__dict__:", Employee.__dict__

Khi mã trên được thực thi, nó sẽ tạo ra kết quả sau -

Employee.__doc__: Common base class for all employees
Employee.__name__: Employee
Employee.__module__: __main__
Employee.__bases__: ()
Employee.__dict__: {'__module__': '__main__', 'displayCount':
, 'empCount': 2, 
'displayEmployee': , 
'__doc__': 'Common base class for all employees', 
'__init__': }

Phá hủy các vật thể (bộ sưu tập rác)

Python xóa các đối tượng không cần thiết (các loại hoặc trường hợp lớp tích hợp) tự động để giải phóng không gian bộ nhớ. Quá trình mà Python định kỳ lấy lại các khối bộ nhớ không còn được sử dụng được gọi là bộ sưu tập rác.

Trình thu gom rác của Python chạy trong quá trình thực hiện chương trình và được kích hoạt khi số lượng tham chiếu của đối tượng đạt đến 0. Số lượng tham chiếu của một đối tượng thay đổi khi số lượng bí danh chỉ ra nó thay đổi.

Số lượng tham chiếu của một đối tượng tăng lên khi nó được gán một tên mới hoặc được đặt trong một container (danh sách, tuple hoặc từ điển). Số lượng tham chiếu của đối tượng giảm khi nó bị xóa với DEL, tham chiếu của nó được chỉ định lại hoặc tham chiếu của nó đi ra khỏi phạm vi. Khi số lượng tham chiếu của một đối tượng đạt đến 0, Python sẽ tự động thu thập nó.

class Employee:
   'Common base class for all employees'
   empCount = 0

   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1
   
   def displayCount(self):
     print "Total Employee %d" % Employee.empCount

   def displayEmployee(self):
      print "Name : ", self.name,  ", Salary: ", self.salary
0

Bạn thường sẽ không nhận thấy khi người thu gom rác phá hủy một ví dụ mồ côi và đòi lại không gian của nó. Nhưng một lớp có thể thực hiện phương thức đặc biệt __del __ (), được gọi là phá hủy, được gọi khi thể hiện sắp bị phá hủy. Phương pháp này có thể được sử dụng để làm sạch bất kỳ tài nguyên không bộ nhớ nào được sử dụng bởi một thể hiện.

Thí dụ

Bộ hủy __del __ () này in tên lớp của một thể hiện sắp bị phá hủy -

class Employee:
   'Common base class for all employees'
   empCount = 0

   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1
   
   def displayCount(self):
     print "Total Employee %d" % Employee.empCount

   def displayEmployee(self):
      print "Name : ", self.name,  ", Salary: ", self.salary
1

Khi mã trên được thực thi, nó sẽ tạo ra kết quả sau -

class Employee:
   'Common base class for all employees'
   empCount = 0

   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1
   
   def displayCount(self):
     print "Total Employee %d" % Employee.empCount

   def displayEmployee(self):
      print "Name : ", self.name,  ", Salary: ", self.salary
2

Lưu ý - lý tưởng nhất, bạn nên xác định các lớp của mình trong tệp riêng biệt, sau đó bạn nên nhập chúng vào tệp chương trình chính của mình bằng câu lệnh nhập. − Ideally, you should define your classes in separate file, then you should import them in your main program file using import statement.

Di truyền lớp

Thay vì bắt đầu từ đầu, bạn có thể tạo một lớp bằng cách lấy nó từ một lớp có từ trước bằng cách liệt kê lớp cha trong ngoặc đơn sau tên lớp mới.

Lớp con thừa hưởng các thuộc tính của lớp cha và bạn có thể sử dụng các thuộc tính đó như thể chúng được xác định trong lớp con. Một lớp con cũng có thể ghi đè các thành viên và phương thức dữ liệu từ cha mẹ.

Cú pháp

Các lớp học có nguồn gốc được tuyên bố giống như lớp cha mẹ của họ; Tuy nhiên, một danh sách các lớp cơ sở để kế thừa được đưa ra sau tên lớp -

class Employee:
   'Common base class for all employees'
   empCount = 0

   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1
   
   def displayCount(self):
     print "Total Employee %d" % Employee.empCount

   def displayEmployee(self):
      print "Name : ", self.name,  ", Salary: ", self.salary
3

Thí dụ

class Employee:
   'Common base class for all employees'
   empCount = 0

   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1
   
   def displayCount(self):
     print "Total Employee %d" % Employee.empCount

   def displayEmployee(self):
      print "Name : ", self.name,  ", Salary: ", self.salary
4

Khi mã trên được thực thi, nó sẽ tạo ra kết quả sau -

class Employee:
   'Common base class for all employees'
   empCount = 0

   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1
   
   def displayCount(self):
     print "Total Employee %d" % Employee.empCount

   def displayEmployee(self):
      print "Name : ", self.name,  ", Salary: ", self.salary
5

Bộ hủy __del __ () này in tên lớp của một thể hiện sắp bị phá hủy -

class Employee:
   'Common base class for all employees'
   empCount = 0

   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1
   
   def displayCount(self):
     print "Total Employee %d" % Employee.empCount

   def displayEmployee(self):
      print "Name : ", self.name,  ", Salary: ", self.salary
6

Khi mã trên được thực thi, nó sẽ tạo ra kết quả sau -

  • Lưu ý - lý tưởng nhất, bạn nên xác định các lớp của mình trong tệp riêng biệt, sau đó bạn nên nhập chúng vào tệp chương trình chính của mình bằng câu lệnh nhập.issubclass(sub, sup) boolean function returns true if the given subclass sub is indeed a subclass of the superclass sup.

  • Di truyền lớpisinstance(obj, Class) boolean function returns true if obj is an instance of class Class or is an instance of a subclass of Class

Thay vì bắt đầu từ đầu, bạn có thể tạo một lớp bằng cách lấy nó từ một lớp có từ trước bằng cách liệt kê lớp cha trong ngoặc đơn sau tên lớp mới.

Lớp con thừa hưởng các thuộc tính của lớp cha và bạn có thể sử dụng các thuộc tính đó như thể chúng được xác định trong lớp con. Một lớp con cũng có thể ghi đè các thành viên và phương thức dữ liệu từ cha mẹ.

Cú pháp

class Employee:
   'Common base class for all employees'
   empCount = 0

   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1
   
   def displayCount(self):
     print "Total Employee %d" % Employee.empCount

   def displayEmployee(self):
      print "Name : ", self.name,  ", Salary: ", self.salary
7

Khi mã trên được thực thi, nó sẽ tạo ra kết quả sau -

class Employee:
   'Common base class for all employees'
   empCount = 0

   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1
   
   def displayCount(self):
     print "Total Employee %d" % Employee.empCount

   def displayEmployee(self):
      print "Name : ", self.name,  ", Salary: ", self.salary
8

Các lớp học có nguồn gốc được tuyên bố giống như lớp cha mẹ của họ; Tuy nhiên, một danh sách các lớp cơ sở để kế thừa được đưa ra sau tên lớp -

Cách tương tự, bạn có thể lái một lớp từ nhiều lớp cha như sau -

Sr.No.Bạn có thể sử dụng các hàm assubClass () hoặc isInstance () để kiểm tra mối quan hệ của hai lớp và trường hợp.
1

Chức năng Boolean của IssubClass (Sub, SUP) trả về đúng nếu phụ lớp đã cho thực sự là một lớp con của Super Super Sup.

Hàm boolean isinstance (obj, class) trả về true nếu obj là một thể hiện của lớp hoặc là một thể hiện của một lớp con của lớp

Phương pháp ghi đè

2

Bạn luôn có thể ghi đè các phương thức lớp cha của bạn. Một lý do để ghi đè các phương thức của cha mẹ là vì bạn có thể muốn chức năng đặc biệt hoặc khác nhau trong lớp con của mình.

Thí dụ

Phương pháp quá tải cơ sở

3

Bảng sau liệt kê một số chức năng chung mà bạn có thể ghi đè trong các lớp của riêng mình -

Phương pháp, Mô tả & Cuộc gọi mẫu

__init__ (tự [, args ...])

4

Hàm tạo (với bất kỳ đối số tùy chọn nào)

Cuộc gọi mẫu: obj = className (args)

__del __ (bản thân)

5

Người phá hủy, xóa một đối tượng

Cuộc gọi mẫu: del obj

__repr __ (bản thân)

Đại diện chuỗi có thể đánh giá

Cuộc gọi mẫu: repr (obj)

__str __ (tự)

Thí dụ

class Employee:
   'Common base class for all employees'
   empCount = 0

   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1
   
   def displayCount(self):
     print "Total Employee %d" % Employee.empCount

   def displayEmployee(self):
      print "Name : ", self.name,  ", Salary: ", self.salary
9

Khi mã trên được thực thi, nó sẽ tạo ra kết quả sau -

"This would create first object of Employee class"
emp1 = Employee("Zara", 2000)
"This would create second object of Employee class"
emp2 = Employee("Manni", 5000)
0

Bộ hủy __del __ () này in tên lớp của một thể hiện sắp bị phá hủy -

Khi mã trên được thực thi, nó sẽ tạo ra kết quả sau -

Thí dụ

"This would create first object of Employee class"
emp1 = Employee("Zara", 2000)
"This would create second object of Employee class"
emp2 = Employee("Manni", 5000)
1

Khi mã trên được thực thi, nó sẽ tạo ra kết quả sau -

"This would create first object of Employee class"
emp1 = Employee("Zara", 2000)
"This would create second object of Employee class"
emp2 = Employee("Manni", 5000)
2

Bộ hủy __del __ () này in tên lớp của một thể hiện sắp bị phá hủy -

"This would create first object of Employee class"
emp1 = Employee("Zara", 2000)
"This would create second object of Employee class"
emp2 = Employee("Manni", 5000)
3

Khi mã trên được thực thi, nó sẽ tạo ra kết quả sau -

"This would create first object of Employee class"
emp1 = Employee("Zara", 2000)
"This would create second object of Employee class"
emp2 = Employee("Manni", 5000)
4

Một ví dụ của một lớp là gì?

Trong lập trình dựa trên lớp, các đối tượng được tạo ra từ các lớp bởi các chương trình con được gọi là các hàm tạo và bị phá hủy bởi các chất hủy diệt.Một đối tượng là một thể hiện của một lớp và có thể được gọi là một thể hiện lớp hoặc đối tượng lớp;Instantiation sau đó còn được gọi là xây dựng.

Ví dụ của một ví dụ lớp là gì?

Các biến thể hiện trong Java là các biến không tĩnh được xác định trong một lớp bên ngoài bất kỳ phương thức, hàm tạo hoặc khối.Mỗi đối tượng khởi tạo của lớp có một bản sao hoặc thể hiện riêng của biến đó.Một biến thể hiện thuộc về một lớp.Bạn phải tự hỏi về chính xác thì một ví dụ là gì?

__ ví dụ trong Python là gì?

Một thuộc tính thể hiện là một biến Python thuộc về một và chỉ một đối tượng.Biến này chỉ có thể truy cập trong phạm vi của đối tượng này và nó được xác định bên trong hàm tạo hàm, __init __ (tự, ..) của lớp.a Python variable belonging to one, and only one, object. This variable is only accessible in the scope of this object and it is defined inside the constructor function, __init__(self,..) of the class.