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 implementation
Ví 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, Alice
Trong 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.0
Trong 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
.