Hướng dẫn self in python stack overflow - self in python stack stack
Lý do bạn cần sử dụng 4 là do Python không sử dụng cú pháp đặc biệt để chỉ các thuộc tính thể hiện. Python quyết định thực hiện các phương thức theo cách làm cho thể hiện phương thức được truyền tự động, nhưng không nhận được tự động: tham số đầu tiên của các phương thức là phiên bản phương thức được gọi. Điều đó làm cho các phương thức hoàn toàn giống như các hàm và để lại tên thực tế để sử dụng cho bạn (mặc dù 5 là quy ước và mọi người thường sẽ cau mày khi bạn sử dụng thứ khác.) một đối tượng khác. Show
Python có thể đã làm một cái gì đó khác để phân biệt các tên bình thường với các thuộc tính - cú pháp đặc biệt như Ruby có, hoặc yêu cầu các khai báo như C ++ và Java làm, hoặc có lẽ một cái gì đó khác biệt hơn - nhưng nó đã không. Python là tất cả để làm cho mọi thứ rõ ràng, làm cho nó rõ ràng là gì, và mặc dù nó không làm điều đó hoàn toàn ở khắp mọi nơi, nhưng nó làm điều đó ví dụ như các thuộc tính. Đó là lý do tại sao việc gán cho một thuộc tính thể hiện cần biết trường hợp nào để gán và đó là lý do tại sao nó cần 4.
Đã trả lời ngày 25 tháng 4 năm 2010 lúc 20:25Apr 25, 2010 at 20:25
Thomas Woutersthomas WoutersThomas Wouters 127K23 Huy hiệu vàng146 Huy hiệu bạc122 Huy hiệu Đồng23 gold badges146 silver badges122 bronze badges 15 Giả sử bạn có lớp 8 chứa phương thức 9 được định nghĩa là:
và 0 là một ví dụ của lớp này.Bây giờ khi 1 được gọi, Python nội bộ chuyển đổi nó cho bạn như:
Biến 5 đề cập đến chính đối tượng.Đã trả lời ngày 26 tháng 1 năm 2014 lúc 17:31Jan 26, 2014 at 17:31
Arjun Sreedharanarjun SreedharanArjun Sreedharan 10,7K2 Huy hiệu vàng23 Huy hiệu bạc33 Huy hiệu đồng2 gold badges23 silver badges33 bronze badges 6 Hãy để một lớp vector đơn giản:
Chúng tôi muốn có một phương pháp tính toán độ dài. Nó sẽ trông như thế nào nếu chúng ta muốn xác định nó trong lớp?
Nó sẽ trông như thế nào khi chúng ta định nghĩa nó là một phương pháp/chức năng toàn cầu?
Vì vậy, toàn bộ cấu trúc vẫn giữ nguyên. Làm thế nào tôi có thể sử dụng điều này? Nếu chúng tôi cho rằng trong một khoảnh khắc chúng tôi đã viết một phương thức 3 cho lớp 4 của chúng tôi, chúng tôi có thể làm điều này:
Điều này hoạt động vì tham số đầu tiên của 5, có thể được sử dụng lại làm tham số 5 trong 7. Điều này sẽ không thể thực hiện được nếu không có 5 rõ ràng.Một cách khác để hiểu sự cần thiết của 5 rõ ràng là xem Python thêm một số đường cú pháp. Khi bạn ghi nhớ, về cơ bản, một cuộc gọi như
được chuyển đổi nội bộ thành
Thật dễ dàng để thấy nơi 5 phù hợp. Bạn không thực sự viết các phương thức thể hiện trong Python; Những gì bạn viết là các phương thức lớp phải lấy một ví dụ như một tham số đầu tiên. Và do đó, bạn sẽ phải đặt tham số thể hiện ở đâu đó rõ ràng.
trống rỗng 4.8923 Huy hiệu vàng31 Huy hiệu bạc56 Huy hiệu Đồng3 gold badges31 silver badges56 bronze badges Đã trả lời ngày 28 tháng 4 năm 2010 lúc 0:03Apr 28, 2010 at 0:03
DebilskidebilskiDebilski 65,9K11 Huy hiệu vàng109 Huy hiệu bạc133 Huy hiệu đồng11 gold badges109 silver badges133 bronze badges 11 Khi các đối tượng được khởi tạo, chính đối tượng được chuyển vào tham số tự. Bởi vì điều này, dữ liệu của đối tượng bị ràng buộc với đối tượng. Dưới đây là một ví dụ về cách bạn có thể muốn hình dung những gì mà mỗi dữ liệu của đối tượng có thể trông. Lưu ý cách thay thế bản thân bằng tên đối tượng. Tôi không nói sơ đồ ví dụ này dưới đây là hoàn toàn chính xác nhưng hy vọng nó đã phục vụ một mục đích trong việc hình dung việc sử dụng bản thân. Đối tượng được chuyển vào tham số tự để đối tượng có thể giữ dữ liệu của chính nó. Mặc dù điều này có thể không hoàn toàn chính xác, hãy nghĩ về quá trình khởi tạo một đối tượng như thế này: khi một đối tượng được tạo ra, nó sử dụng lớp làm mẫu cho dữ liệu và phương thức của chính nó. Không chuyển tên riêng của nó vào tham số tự, các thuộc tính và phương thức trong lớp sẽ vẫn là một mẫu chung và sẽ không được tham khảo (thuộc) đối tượng. Vì vậy, bằng cách chuyển tên của đối tượng vào tham số tự nó, điều đó có nghĩa là nếu 100 đối tượng được khởi tạo từ một lớp, tất cả họ đều có thể theo dõi dữ liệu và phương thức của riêng mình. Xem hình minh họa dưới đây: Đã trả lời ngày 28 tháng 6 năm 2015 lúc 5:47Jun 28, 2015 at 5:47
sw123456sw123456sw123456 3.1911 Huy hiệu vàng18 Huy hiệu bạc35 Huy hiệu đồng1 gold badge18 silver badges35 bronze badges 9 Tôi thích ví dụ này:
Đã trả lời ngày 26 tháng 4 năm 2010 lúc 16:02Apr 26, 2010 at 16:02
KameKamekame Phù hiệu vàng 19.7k30 Huy hiệu bạc150 Huy hiệu đồng30 gold badges101 silver badges150 bronze badges 6 Tôi sẽ chứng minh với mã không sử dụng các lớp:does not use classes:
Các lớp học chỉ là một cách để tránh truyền trong điều "trạng thái" này mọi lúc (và những thứ tốt đẹp khác như khởi tạo, thành phần lớp, các metaclass hiếm khi cần thiết và hỗ trợ các phương thức tùy chỉnh để ghi đè các toán tử). Bây giờ chúng ta hãy trình bày mã trên bằng cách sử dụng máy móc lớp Python tích hợp, để cho thấy về cơ bản nó giống như thế nào. 0[Di chuyển câu trả lời của tôi từ câu hỏi đóng trùng trùng lặp]] Đã trả lời ngày 22 tháng 6 năm 2011 lúc 0:27Jun 22, 2011 at 0:27
Ninjageckoninjageckoninjagecko 85,6K24 Huy hiệu vàng134 Huy hiệu bạc143 Huy hiệu đồng24 gold badges134 silver badges143 bronze badges 2 Các trích đoạn sau đây là từ tài liệu Python về bản thân:
Để biết thêm thông tin, hãy xem hướng dẫn tài liệu Python về các lớp học.
Đã trả lời ngày 25 tháng 4 năm 2010 lúc 20:29Apr 25, 2010 at 20:29
Matthew RankinMatthew RankinMatthew Rankin 441K38 Huy hiệu vàng121 Huy hiệu bạc160 Huy hiệu đồng38 gold badges121 silver badges160 bronze badges Cũng như tất cả các lý do khác đã được nêu, nó cho phép truy cập dễ dàng hơn vào các phương thức ghi đè; Bạn có thể gọi 1.Một ví dụ về nơi mà nó hữu ích: 1 2
Ry- ♦♦ Phim thương hiệu vàng 212K5454 gold badges443 silver badges457 bronze badges Đã trả lời ngày 25 tháng 4 năm 2010 lúc 20:31Apr 25, 2010 at 20:31
PonkadoodleponkadoodlePonkadoodle 5.6955 Huy hiệu vàng35 Huy hiệu bạc62 Huy hiệu Đồng5 gold badges35 silver badges62 bronze badges Việc sử dụng nó tương tự như việc sử dụng từ khóa 2 trong Java, tức là để cung cấp một tham chiếu đến đối tượng hiện tại.
Đã trả lời ngày 30 tháng 8 năm 2012 lúc 16:37Aug 30, 2012 at 16:37
1 Python không phải là một ngôn ngữ được xây dựng cho lập trình hướng đối tượng không giống như Java hoặc C ++. Khi gọi một phương thức tĩnh trong Python, người ta chỉ cần viết một phương thức với các đối số thông thường bên trong nó. 3Tuy nhiên, một phương thức đối tượng, yêu cầu bạn phải tạo một biến, trong trường hợp này, cần phải có đối số tự 4Phương pháp tự cũng được sử dụng để chỉ một trường biến trong lớp. 5Trong trường hợp này, bản thân đang đề cập đến biến động vật của toàn bộ lớp. Hãy nhớ rằng: nếu bạn có một biến trong một phương thức, bản thân sẽ không hoạt động. Biến đó chỉ đơn giản là chỉ tồn tại trong khi phương pháp đó đang chạy. Để xác định các trường (các biến của toàn bộ lớp), bạn phải xác định chúng bên ngoài các phương thức lớp. Nếu bạn không hiểu một từ nào về những gì tôi đang nói, thì Google "lập trình hướng đối tượng". Một khi bạn hiểu điều này, bạn thậm chí sẽ không cần phải hỏi câu hỏi đó :). Đã trả lời ngày 25 tháng 5 năm 2015 lúc 16:04May 25, 2015 at 16:04
rassa45rassa45rassa45 3,4161 Huy hiệu vàng28 Huy hiệu bạc43 Huy hiệu đồng1 gold badge28 silver badges43 bronze badges 8 Trước hết, bản thân là một cái tên thông thường, bạn có thể đặt bất cứ thứ gì khác (mạch lạc) thay cho nó. Nó đề cập đến chính đối tượng, vì vậy khi bạn đang sử dụng nó, bạn đang tuyên bố rằng .name và .age là các thuộc tính của các đối tượng sinh viên (lưu ý, không phải của lớp học sinh) mà bạn sẽ tạo. 6Mã ở đây Đã trả lời ngày 12 tháng 1 năm 2018 lúc 4:45Jan 12, 2018 at 4:45
0 5 là một tham chiếu đối tượng cho chính đối tượng, do đó, chúng giống nhau. Các phương thức Python không được gọi trong bối cảnh của chính đối tượng. 5 trong Python có thể được sử dụng để đối phó với các mô hình đối tượng tùy chỉnh hoặc một cái gì đó.Đã trả lời ngày 25 tháng 4 năm 2010 lúc 20:26Apr 25, 2010 at 20:26
Ming-TangMing-TangMing-Tang 17.2k8 Huy hiệu vàng36 Huy hiệu bạc75 Huy hiệu Đồng8 gold badges36 silver badges75 bronze badges Nó ở đó để theo dõi Python Zen, rõ ràng là tốt hơn so với tiềm ẩn. Nó thực sự là một tham chiếu đến đối tượng lớp của bạn. Ví dụ, trong Java và PHP, nó được gọi là 2.Nếu 6 là một trường trên mô hình của bạn, bạn sẽ truy cập nó bằng 7.
Ry- ♦♦ Phim thương hiệu vàng 212K5454 gold badges443 silver badges457 bronze badges Đã trả lời ngày 25 tháng 4 năm 2010 lúc 20:31Aug 16, 2013 at 17:23
dan-klassondan-klassondan-klasson Ponkadoodleponkadoodle14 gold badges59 silver badges100 bronze badges 5.6955 Huy hiệu vàng35 Huy hiệu bạc62 Huy hiệu Đồng Việc sử dụng nó tương tự như việc sử dụng từ khóa 2 trong Java, tức là để cung cấp một tham chiếu đến đối tượng hiện tại.Jan 12, 2016 at 18:10
user441521user441521user441521 Đã trả lời ngày 30 tháng 8 năm 2012 lúc 16:3722 gold badges85 silver badges156 bronze badges Python không phải là một ngôn ngữ được xây dựng cho lập trình hướng đối tượng không giống như Java hoặc C ++. Khi gọi một phương thức tĩnh trong Python, người ta chỉ cần viết một phương thức với các đối số thông thường bên trong nó. Tuy nhiên, một phương thức đối tượng, yêu cầu bạn phải tạo một biến, trong trường hợp này, cần phải có đối số tự
2: Tại sao chúng ta có nó theo cách này và tại sao chúng ta không thể loại bỏ nó như một đối số, như Java và có một từ khóa thay thế Một điều khác tôi muốn thêm là, một đối số 5 tùy chọn cho phép tôi khai báo các phương thức tĩnh bên trong một lớp, bằng cách không viết 5.Ví dụ về mã: 7PS: Điều này chỉ hoạt động trong Python 3.x.:This works only in Python 3.x. Trong các phiên bản trước, bạn phải thêm một cách rõ ràng 1 Trình trang trí, nếu không thì đối số 5 là bắt buộc.Đã trả lời ngày 1 tháng 8 năm 2018 lúc 10:53Aug 1, 2018 at 10:53
Bugs BuggyBugs BuggyBugs Buggy 1.50416 huy hiệu bạc38 Huy hiệu đồng16 silver badges38 bronze badges Hãy xem ví dụ sau, giải thích rõ ràng mục đích của 5 8 5 được sử dụng/cần thiết để phân biệt giữa các trường hợp.Nguồn: Tự biến trong Python giải thích - Pythontips Đã trả lời ngày 15 tháng 11 năm 2014 lúc 7:54Nov 15, 2014 at 7:54
kmario23kmario23kmario23 53K13 Huy hiệu vàng148 Huy hiệu bạc146 Huy hiệu đồng13 gold badges148 silver badges146 bronze badges 2 Là bởi vì nhân tiện, Python được thiết kế, các lựa chọn thay thế sẽ khó hoạt động. Python được thiết kế để cho phép các phương thức hoặc chức năng được xác định trong bối cảnh mà cả hai 2 (A-LA Java/C ++)) hoặc rõ ràng 6 (A-LA Ruby) sẽ không hoạt động. Chúng ta hãy có một ví dụ với cách tiếp cận rõ ràng với các quy ước Python: 9Bây giờ hàm 7 sẽ không hoạt động vì nó cho rằng 5 là một biến toàn cầu (và trong 9 cũng vậy). Giải pháp thay thế sẽ là thực thi phương thức với phạm vi toàn cầu được thay thế (trong đó 5 là đối tượng).Cách tiếp cận ngầm sẽ là 0Điều này có nghĩa là 1 sẽ được hiểu là một biến cục bộ trong 7 (và trong 9 cũng vậy). Giải pháp thay thế ở đây sẽ là thực thi các phương thức với phạm vi cục bộ được thay thế được giữ lại giữa các cuộc gọi, nhưng điều đó sẽ loại bỏ khả năng tích cực của các biến cục bộ phương thức.Tuy nhiên, tình hình hiện tại hoạt động tốt: 1Ở đây khi được gọi là phương thức 9 sẽ nhận được đối tượng được gọi qua tham số 5 và 7 vẫn có thể được gọi với một đối tượng là tham số và hoạt động giống nhau (nó giống như 7 tôi nghĩ).Đã trả lời ngày 27 tháng 8 năm 2015 lúc 7:31Aug 27, 2015 at 7:31
Skykingskykingskyking Huy hiệu vàng 13.4K11 gold badge34 silver badges55 bronze badges Trong phương thức 8, tự đề cập đến đối tượng mới được tạo; Trong các phương thức lớp khác, nó đề cập đến trường hợp có phương thức được gọi.Bản thân, như một cái tên, chỉ là một quy ước, hãy gọi nó như bạn muốn! Nhưng khi sử dụng nó, ví dụ để xóa đối tượng, bạn phải sử dụng cùng tên: 9, trong đó 0 đã được sử dụng trong 1just a convention, call it as you want ! but when using it, for example to delete the object, you have to use the
same name: 9, where 0 was used in the 1Bạn cũng nên xem 2, để có bức tranh lớn hơn. Bài này có thể hữu ích.the bigger picture. This post could be helpful.
Đã trả lời ngày 26 tháng 1 năm 2014 lúc 18:11Jan 26, 2014 at 18:11
Oussama L.Oussama L.Oussama L. 1.8026 Huy hiệu vàng25 Huy hiệu bạc 30 Huy hiệu Đồng6 gold badges25 silver badges30 bronze badges Tự hành động giống như tên đối tượng hiện tại hoặc thể hiện của lớp. 2Đã trả lời ngày 28 tháng 10 năm 2019 lúc 2:15Oct 28, 2019 at 2:15
Từ khóa "Tự" giữ tài liệu tham khảo của lớp và tùy thuộc vào bạn nếu bạn muốn sử dụng nó hay không nhưng nếu bạn chú ý, bất cứ khi nào bạn tạo một phương thức mới trong Python, Python sẽ tự động viết từ khóa tự cho bạn. Nếu bạn thực hiện một số R & D, bạn sẽ nhận thấy rằng nếu bạn tạo ra hai phương thức trong một lớp và cố gắng gọi một trong những phương thức khác, nó sẽ không nhận ra phương thức trừ khi bạn tự thêm (tham chiếu của lớp). 3Dưới đây mã ném lỗi tham chiếu không thể giải quyết được. 4Bây giờ hãy xem ví dụ dưới đây 5Bây giờ khi bạn tạo đối tượng của lớp testa, bạn có thể gọi phương thức m1 () bằng cách sử dụng đối tượng lớp như thế này làm phương thức m1 () đã bao gồm từ khóa tự 6Nhưng nếu bạn muốn gọi Phương thức M2 (), vì là không có tự tham khảo để bạn có thể gọi M2 () trực tiếp bằng tên lớp như bên dưới 7Nhưng hãy giữ trong thực tế để sống với từ khóa bản thân vì cũng có những lợi ích khác như tạo ra biến toàn cầu bên trong và vân vân. Đã trả lời ngày 8 tháng 8 năm 2020 lúc 21:49Aug 8, 2020 at 21:49
Rahul Jharahul JhaRahul Jha 7261 Huy hiệu vàng9 Huy hiệu bạc22 Huy hiệu đồng1 gold badge9 silver badges22 bronze badges def length(self): return math.sqrt(self.x ** 2 + self.y ** 2) 5 là không thể tránh khỏi.Chỉ có một câu hỏi nên 5 được ngầm định hoặc rõ ràng. 5 đã giải quyết câu hỏi này nói rằng 5 phải ở lại.Vậy def length(self): return math.sqrt(self.x ** 2 + self.y ** 2) 5 sống ở đâu?Nếu chúng ta chỉ tuân thủ lập trình chức năng, chúng ta sẽ không cần 5. Khi chúng ta vào Python OOP, chúng ta tìm thấy 5 ở đó.Đây là trường hợp sử dụng điển hình 0 với phương pháp 1 8Chương trình này sẽ xuất hiện: 9Vì vậy, 5 giữ địa chỉ bộ nhớ của thể hiện lớp. Mục đích của 5 sẽ là giữ các phương thức tham khảo và để chúng tôi có quyền truy cập rõ ràng vào tài liệu tham khảo đó.explicit access to that
reference. Lưu ý Có ba loại phương pháp lớp khác nhau:
Đã trả lời ngày 23 tháng 5 năm 2019 lúc 16:32May 23, 2019 at 16:32
tuyến tiền liệtprosti 37.9K11 Huy hiệu vàng169 Huy hiệu bạc144 Huy hiệu đồng11 gold badges169 silver badges144 bronze badges Từ 'tự' đề cập đến ví dụ của một lớp học 0Đã trả lời ngày 9 tháng 4 năm 2021 lúc 4:52Apr 9, 2021 at 4:52
BohhavdevoprabhavdevoPrabhavDevo 1.3706 huy hiệu bạc21 Huy hiệu đồng6 silver badges21 bronze badges Đó là một tham chiếu rõ ràng đến đối tượng thể hiện lớp. Đã trả lời ngày 25 tháng 4 năm 2010 lúc 20:24Apr 25, 2010 at 20:24
SilentghostsilentghostSilentGhost 295K64 Huy hiệu vàng301 Huy hiệu bạc291 Huy hiệu Đồng64 gold badges301 silver badges291 bronze badges 2 từ các tài liệu,
trước đây là đoạn trích liên quan, 1 6Đã trả lời ngày 26 tháng 2 năm 2020 lúc 10:39Feb 26, 2020 at 10:39
Laxmanlaxmanlaxman 1.4024 huy hiệu vàng11 Huy hiệu bạc31 Huy hiệu đồng4 gold badges11 silver badges31 bronze badges Tôi sẽ nói cho Python ít nhất, tham số bản thân có thể được coi là một người giữ chỗ. Hãy xem này: 2Tự trong trường hợp này và rất nhiều người khác đã được sử dụng như một phương pháp để nói lưu trữ giá trị tên. Tuy nhiên, sau đó, chúng tôi sử dụng P1 để gán nó cho lớp chúng tôi đang sử dụng. Sau đó, khi chúng tôi in nó, chúng tôi sử dụng cùng một từ khóa P1. Hy vọng điều này sẽ giúp cho Python! Đã trả lời ngày 23 tháng 6 năm 2020 lúc 13:50Jun 23, 2020 at 13:50
RishirishiRishi Phù hiệu đồng 4144 bronze badges 2 xu nhỏ của tôi Trong người lớp này, chúng tôi đã xác định phương pháp init với bản thân và điều thú vị cần chú ý ở đây là vị trí bộ nhớ của cả biến bản thân và biến thể P là giống nhau 7init method with the self and interesting thing to notice here is the memory location of both the self and instance variable p is same 7 3Vì vậy, như được giải thích ở trên, cả biến bản thân và thể hiện là cùng một đối tượng. Đã trả lời ngày 27 tháng 12 năm 2020 lúc 0:13Dec 27, 2020 at 0:13
Saransaransaran 3241 Huy hiệu vàng3 Huy hiệu bạc13 Huy hiệu đồng1 gold badge3 silver badges13 bronze badges Bản thân trong Python Stack Overflow là gì?Bản thân là một tham chiếu đối tượng cho chính đối tượng, do đó, chúng giống nhau. Các phương thức Python không được gọi trong bối cảnh của chính đối tượng. Tự trong Python có thể được sử dụng để đối phó với các mô hình đối tượng tùy chỉnh hoặc một cái gì đó.an object reference to the object itself, therefore, they are same. Python methods are not called in the context of the object itself. self in Python may be used to deal with custom object models or something.
Tự () trong Python là gì?Bản thân được sử dụng để đại diện cho thể hiện của lớp.Với từ khóa này, bạn có thể truy cập các thuộc tính và phương thức của lớp trong Python.Nó liên kết các thuộc tính với các đối số đã cho.Lý do tại sao chúng ta sử dụng bản thân là Python không sử dụng cú pháp '@' để chỉ các thuộc tính thể hiện.used to represent the instance of the class. With this keyword, you can access the attributes and methods of the class in python. It binds the attributes with the given arguments. The reason why we use self is that Python does not use the '@' syntax to refer to instance attributes.
__ init __ là gì (bản thân trong Python?Bản thân trong từ khóa trong Python được sử dụng cho tất cả các trường hợp trong một lớp.Bằng cách sử dụng từ khóa tự, người ta có thể dễ dàng truy cập tất cả các trường hợp được xác định trong một lớp, bao gồm các phương thức và thuộc tính của nó.trong đó.__init__ là một trong những phương pháp dành riêng trong Python.Trong lập trình định hướng đối tượng, nó được gọi là một hàm tạo.used to all the instances in a class. By using the self keyword, one can easily access all the instances defined within a class, including its methods and attributes. init. __init__ is one of the reserved methods in Python. In object oriented programming, it is known as a constructor.
Bạn có thể gán bản thân trong Python?Người ta có thể sử dụng phép tự phân công trong một phương thức, để thay đổi lớp thể hiện thành một lớp dẫn xuất.Tất nhiên người ta có thể gán nó cho một đối tượng mới, nhưng sau đó việc sử dụng đối tượng mới gợn sóng thông qua phần còn lại của mã trong phương thức.Tái định vị nó thành bản thân, để lại phần còn lại của phương pháp không bị ảnh hưởng.. Of course one could assign it to a new object, but then the use of the new object ripples through the rest of code in the method. Reassiging it to self, leaves the rest of the method untouched. |