Trong Python, objects as arguments là một phương thức cho phép truyền đối tượng (object) như một đối số vào một hàm hoặc phương thức. Đối tượng này có thể được tạo ra bởi một class hoặc một đối tượng khác.
Cú pháp khai báo:
def function_name(object):
# code implementationVí dụ 1: Truyền đối tượng vào hàm
class Person:
def __init__(self, name):
self.name = name
def greet(person):
print("Hello, " + person.name)
person1 = Person("Alice")
greet(person1) # Hello, AliceTrong ví dụ này, chúng ta định nghĩa class Person với thuộc tính name và phương thức khởi tạo. Sau đó, chúng ta định nghĩa hàm greet() nhận đối tượng person làm đối số và in ra lời chào với thuộc tính name của đối tượng. Cuối cùng, chúng ta tạo một đối tượng person1 từ class Person và truyền nó vào hàm greet().
Ví dụ 2: Truyền đối tượng vào phương thức
class Circle:
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius ** 2
class Cylinder:
def __init__(self, height, base):
self.height = height
self.base = base
def volume(self):
return self.base.area() * self.height
circle = Circle(5)
cylinder = Cylinder(10, circle)
print(cylinder.volume()) # 785.0Trong ví dụ này, chúng ta định nghĩa class Circle với thuộc tính radius và phương thức tính diện tích. Sau đó, chúng ta định nghĩa class Cylinder với thuộc tính height và base, trong đó base là một đối tượng của class Circle. Phương thức volume() của class Cylinder sử dụng phương thức area() của đối tượng base để tính thể tích hình trụ. Cuối cùng, chúng ta tạo một đối tượng circle từ class Circle và truyền nó vào thuộc tính base của đối tượng cylinder.
Ví dụ 3: Truyền đối tượng vào hàm khởi tạo
Trong ví dụ này, ta sẽ tạo ra hai class: Person và Employee. Person sẽ đại diện cho thông tin cơ bản của một người, bao gồm name, age và address. Employee sẽ kế thừa từ Person và có thêm thông tin liên quan đến việc làm như company và salary.
Trong phần khởi tạo của Employee, ta sẽ truyền một đối tượng Person vào và lấy thông tin của nó để tạo ra một đối tượng Employee mới với thông tin từ cả Person và Employee.
class Person:
def __init__(self, name, age, address):
self.name = name
self.age = age
self.address = address
class Employee(Person):
def __init__(self, person, company, salary):
super().__init__(person.name, person.age, person.address)
self.company = company
self.salary = salary
person = Person("John", 30, "123 Main Street")
employee = Employee(person, "ACME Inc.", 50000)
print(employee.name) # Output: John
print(employee.age) # Output: 30
print(employee.address) # Output: 123 Main Street
print(employee.company) # Output: ACME Inc.
print(employee.salary) # Output: 50000Ở đây, ta tạo ra một đối tượng person với tên “John”, tuổi 30 và địa chỉ “123 Main Street”. Sau đó, ta tạo ra một đối tượng employee và truyền đối tượng person và thông tin về công ty và lương. Trong phần khởi tạo của Employee, ta sử dụng super() để gọi phương thức khởi tạo của Person và lấy thông tin từ đối tượng person được truyền vào để khởi tạo đối tượng Employee mới.
Sau khi tạo xong đối tượng employee, ta có thể truy cập vào các thuộc tính của Person và Employee bằng cách gọi tên thuộc tính của đối tượng employee.
