Tôi có một mô -đun bao gồm các định nghĩa cho hai lớp khác nhau trong Python. Làm cách nào để sử dụng các đối tượng của một lớp làm đối số của lớp kia? Giả sử, tôi có định nghĩa lớp cho người lái và xe hơi, và Tuen muốn có một đối tượng trình điều khiển như một đối số cho một đối tượng xe hơi.
Hỏi ngày 11 tháng 8 năm 2010 lúc 8:32Aug 11, 2010 at 8:32
2
Cập nhật: OP đang cố gắng vượt qua một thể hiện đối tượng tại thời điểm định nghĩa lớp [hoặc vì vậy tôi nghĩ sau khi thấy nhận xét của anh ấy]. Câu trả lời dưới đây không được áp dụng.: The OP is trying to pass an object instance at class definition time [or so I think after seeing his comment]. The answer below is not applicable.
Đây có phải là những gì bạn đang cố gắng để đạt được?
class Car:
def __init__[self, driver]:
self.driver = driver
class Driver:
pass
driver = Driver[]
car = Car[driver]
Đã trả lời ngày 11 tháng 8 năm 2010 lúc 8:38Aug 11, 2010 at 8:38
Manoj Govindanmanoj GovindanManoj Govindan
69,7K21 Huy hiệu vàng131 Huy hiệu bạc138 Huy hiệu đồng21 gold badges131 silver badges138 bronze badges
2
Tạo một thể hiện của một đối tượng trình điều khiển và chuyển nó cho hàm tạo của xe.
e.g.,
>>> d = Driver[]
>>> c = Car[d]
hoặc công bằng
>>> c = Car[Driver[]]
[edit]
Vì vậy, bạn đang cố gắng sử dụng một thể hiện của trình điều khiển khi bạn xác định một lớp? Tôi vẫn không chắc tôi hiểu bạn đang cố gắng làm gì nhưng có vẻ như một loại trang trí nào đó.
def OwnedCar[driver]:
class Car[object]:
owner = driver
#...
return Car
steve = Driver[]
SteveCar = OwnedCar[steve]
Đã trả lời ngày 11 tháng 8 năm 2010 lúc 8:37Aug 11, 2010 at 8:37
Jeff Mercadojeff MercadoJeff Mercado
124K31 Huy hiệu vàng239 Huy hiệu bạc258 Huy hiệu Đồng31 gold badges239 silver badges258 bronze badges
2
Nếu tôi hiểu câu hỏi của bạn, điều này sẽ giúp bạn cho rằng chúng tôi có ngân hàng lớp: '' 'Sau khi xây dựng, chúng tôi có một phương thức khác' '' Def [self, số lượng, đối tượng]: #Object được truyền để tham chiếu một đối tượng BankAccount. tín dụng [tự, số tiền] đối tượng.debit [số tiền]
Phương thức gọi Bank1 = BankAccount [] Bank1.Transfer [2000, ObjectName]
Đã trả lời ngày 6 tháng 5 năm 2014 lúc 4:05May 6, 2014 at 4:05
class Vehicle: def __init__[self]: self.trucks = [] def add_truck[self, truck]: self.trucks.append[truck] class Truck: def __init__[self, color]: self.color = color def __repr__[self]: return "{}".format[self.color] def main[]: v = Vehicle[] for t in 'Red Blue Black'.split[]: t = Truck[t] v.add_truck[t] print[v.trucks] if __name__ == "__main__": main[]
Trong ví dụ, có hai lớp xe và xe tải, đối tượng của xe tải lớp được truyền dưới dạng tham số cho phương pháp của xe lớp. Trong phương thức chính [] đối tượng của xe được tạo. Sau đó, phương thức add_truck [] của xe lớp được gọi và đối tượng của lớp xe tải được truyền dưới dạng tham số.
Đầu ra mẫu của chương trình trên.
2020-11-17T05: 06: 09+05: 302020-11-17T05: 06: 09+05: 30Amit Aroraccothon Lập trình TutororythonPractical Solution 2020-11-17T05:06:09+05:30 Amit Arora Python Programming Tutorial Python Practical Solution
Đối tượng vượt qua & trở lại
Để fucntion hoặc hàm tạo thay vì truyền tham số đơn giản, một đối tượng cũng có thể được truyền.
Ví dụ về Pass và trả về đối tượng như sau
class Box:
length=0
breadth=0 def change[self,box1]: box1.length=box1.length*2;
box1.breadth=box1.breadth*2 return box1 b1= Box[] b1.length=100
b1.breadth=50
b2=Box[]
boxChanged=b2.change[b1]
print["changed length= ",boxChanged.length ," changed breadth=",boxChanged.breadth]
& nbsp; & nbsp; đầu ra: chiều dài thay đổi = 200 thay đổi chiều rộng = 100