Hướng dẫn is self optional in python? - là tự tùy chọn trong python?
Tháng 11-25-2016, 08:33 PM (Bài đăng này được sửa đổi lần cuối: tháng 11-25-2016, 08:33 PM bởi Meems.) (This post was last modified: Nov-25-2016, 08:33 PM by meems.) Show Tôi đến từ một ngôn ngữ không sử dụng từ khóa 'tự'. Ví dụ 'bản thân' này được tìm thấy trên mạng không giải thích cho tôi tại sao bản thân là cần thiết. Trong thực tế, khi tôi xóa mã 'bản thân', mã vẫn hoạt động. class Restaurant(object): bankrupt = False def open_branch(self): if not self.bankrupt: print("branch opened") x=Restaurant() x.bankrupt= True print x.bankrupt class Restaurant(object): bankrupt = False def open_branch(): if not bankrupt: print("branch opened") x=Restaurant() x.bankrupt= True print x.bankrupt Mã vẫn hoạt động với bản thân bị loại bỏ. Tôi đã thấy các ví dụ khác trong đó các chức năng được xác định để lấy một đối số 'tự', không thực sự yêu cầu sau đó khi được gọi. ví dụ. class BankAccount(object): def __init__(self, initial_balance=0): self.balance = initial_balance def deposit(self, amount): self.balance += amount def withdraw(self, amount): self.balance -= amount def overdrawn(self): return self.balance < 0 my_account = BankAccount(15) my_account.withdraw(5) print my_account.balance Gọi chức năng rút tiền không yêu cầu bất kỳ biến nào để điền vào tham số 'tự'. Vậy .... 'tự' có dư thừa không? Mã đơn giản nhất mà bạn biết ở đâu là thiết yếu, nếu không có mã nào sẽ không hoạt động?
Bài viết: 5.1385,138 Chủ đề: 394394 Tham gia: Tháng 9 năm 2016Sep 2016 Danh tiếng: 170 170 Tháng 11-25-2016, 09:36 PM (Bài đăng này được sửa đổi lần cuối: tháng 11-25-2016, 09:36 PM của Metulburr.) (This post was last modified: Nov-25-2016, 09:36 PM by metulburr.) Quote:def open_branch(self): Tự xác định đây là một phương thức thể hiện, trong khi không có nó sẽ là một phương thức lớp. Trích dẫn: Mã vẫn hoạt động với bản thân bị loại bỏ.Code still works with self removed. bạn chưa bao giờ thực sự gọi phương thức open_branch nếu bạn đã làm thông qua isntance & nbsp; nó sẽ cho bạn lỗi
Tương tự với phương pháp thu được, nếu bạn tự xóa, bạn sẽ nhận được
phiên bản my_account đang gọi một phương thức mà nó hy vọng sẽ lấy tham số đầu tiên làm chính nó http://neopythonic.blogspot.com/2008/10/...-stay.html Guido & nbsp; van & nbsp; Rossum đã viết: Bruce Eckel có & nbsp; Blogged & nbsp; về một đề xuất để xóa 'tự' khỏi danh sách các phương thức chính thức. Tôi sẽ giải thích tại sao đề xuất này không thể bay.blogged about a proposal to remove 'self' from the formal parameter list of methods. I'm going to explain why this proposal can't fly. Bài viết: 687687 Chủ đề: 3737 Tham gia: Tháng 9 năm 2016Sep 2016 Danh tiếng: 24 24 . Ví dụ 'bản thân' này được tìm thấy trên mạng không giải thích cho tôi tại sao bản thân là cần thiết. Trong thực tế, khi tôi xóa mã 'tự', mã vẫn hoạt động .________ 0class Restaurant(object): bankrupt = False def open_branch(): if not bankrupt: print("branch opened") x=Restaurant() x.bankrupt= True print x.bankruptCode vẫn hoạt động với bản thân bị loại bỏ.meems Wrote: I'm coming from a language that doesn't use the keywords 'self'. This 'self' example found on the net doesn't explain to me why self is necessary. In fact when I removed the 'self' the code still worked.class Restaurant(object): bankrupt = False def open_branch(self): if not self.bankrupt: print("branch opened") x=Restaurant() x.bankrupt= True print x.bankruptclass Restaurant(object): bankrupt = False def open_branch(): if not bankrupt: print("branch opened") x=Restaurant() x.bankrupt= True print x.bankruptCode still works with self removed. Mã của bạn hoạt động vì khi bạn sử dụng nó "phá sản" thực sự là một biến lớp trong Python. Bạn mã sẽ không hoạt động với hai trường hợp khác nhau của nhà hàng. Bạn nên sử dụng self.bankrupt = false để tạo biến/thuộc tính.self.bankrupt=false to create an instance variable/attribute. Trừ khi có ghi chú khác, mã trong các bài đăng của tôi nên được hiểu là "đề xuất mã hóa" và việc sử dụng nó có thể đòi hỏi nhiều tế bào thần kinh hơn hai điều cần thiết cho CTRL-C/CTRL-V. Nơi một cửa của bạn cho tất cả các nhu cầu của bạn: gimp-forum.net Meems người Pháp ngớ ngẩn Bài viết: 2424 Chủ đề: 1010 Tham gia: tháng 11 năm 2016Nov 2016 Danh tiếng: 0 0 Tháng 11-26-2016, 12:45 sáng (Bài đăng này được sửa đổi lần cuối: tháng 11-26-2016, 12:54 AM bởi Meems.) (This post was last modified: Nov-26-2016, 12:54 AM by meems.) Cảm ơn tôi thấy bây giờ rõ ràng là tôi cần gọi phương thức lớp để kiểm tra xem mã có hoạt động mà không có bản thân hay không. 2 điều còn lại: a.) Điểm của tôi rằng khi một hàm được gọi, bản thân không được đặt trong danh sách tham số, nhưng nó xuất hiện trong định nghĩa hàm. Điều này là ngu ngốc, và sẽ mất một số làm quen. ví dụ. class Restaurant(object): bankrupt = False def open_branch(): if not bankrupt: print("branch opened") x=Restaurant() x.bankrupt= True print x.bankrupt9 Nhưng sau đó khi được gọi ... class BankAccount(object): def __init__(self, initial_balance=0): self.balance = initial_balance def deposit(self, amount): self.balance += amount def withdraw(self, amount): self.balance -= amount def overdrawn(self): return self.balance < 0 my_account = BankAccount(15) my_account.withdraw(5) print my_account.balance0 b.) Vẫn không hiểu tại sao bản thân là cần thiết. Có vẻ như đó là một lý do khá sâu sắc để làm với 'người trang trí', đó là một khái niệm mà tôi không biết và chưa bao giờ sử dụng. Nếu bất cứ ai biết về ví dụ đơn giản nhất về mã hoặc mã giả mà người khiếu nại sẽ không thể hiểu do thiếu 'bản thân', tôi sẽ quan tâm đến việc xem nó. Mục nhập wiki trên 'This' nói rằng phạm vi từ vựng có thể được sử dụng để khắc phục các vấn đề phát sinh khi không có 'cái này'. Phạm vi từ vựng là điều tôi hiểu và sử dụng. Tuy nhiên, tôi không thấy làm thế nào nó giải quyết được vấn đề không có 'cái này' bởi vì tôi không thấy có vấn đề gì khi bắt đầu với:/https://en.wikipedia.org/wiki/this_ (comp ... ogramming) Hãy để tôi đặt nó một cách khác: Theo tôi, 'tự' được gọi hoàn toàn trong tên biến class BankAccount(object): def __init__(self, initial_balance=0): self.balance = initial_balance def deposit(self, amount): self.balance += amount def withdraw(self, amount): self.balance -= amount def overdrawn(self): return self.balance < 0 my_account = BankAccount(15) my_account.withdraw(5) print my_account.balance1 Điều 'bản thân' đó không cần phải nằm trong các thông số là một triệu chứng của bản thân là dư thừa, nhưng có vẻ như nhóm Python Dev không muốn chấp nhận điều này! Bài viết: 5.1385,138 Chủ đề: 394394 Tham gia: Tháng 9 năm 2016Sep 2016 Danh tiếng: 170 170 Trích dẫn: 'Bản thân' đó không cần phải nằm trong các thông số là một triệu chứng của bản thân là dự phòng, nhưng có vẻ như nhóm Python Dev không muốn chấp nhận điều này!that 'self' doesn't need to be in the parameters is a symptom of self being redundant, but seems the python dev team don't want to accept this ! rõ ràng là tốt hơn class BankAccount(object): def __init__(self, initial_balance=0): self.balance = initial_balance def deposit(self, amount): self.balance += amount def withdraw(self, amount): self.balance -= amount def overdrawn(self): return self.balance < 0 my_account = BankAccount(15) my_account.withdraw(5) print my_account.balance2 Trích dẫn: a.) Điểm của tôi rằng khi một hàm được gọi, bản thân không được đặt trong danh sách tham số, nhưng nó xuất hiện trong định nghĩa hàm. Điều này là ngu ngốc, và sẽ mất một số làm quen.a.) My point that when a function is called, self is not put in the parameter list, but it does appear in the function definition. This is dumb, and will take some getting used to. Tôi phải chỉ sử dụng Python quá lâu, tôi thậm chí không nghĩ về nó. Tôi (cá nhân) coi bản thân trong định nghĩa lớp là chuyển đổi, để nói rằng tôi muốn đây là một phương thức thể hiện. Đó là một định danh dễ dàng cho các phương thức trong một lớp để xác định phương thức loại/phiên bản nào. & Nbsp; và khi gọi nó từ một trường hợp, không cần thiết vì nó rõ ràng là phương thức thể hiện.it is obviously an the instance method. Nếu bạn nghĩ rằng nó dư thừa để đặt bản thân vào các tham số, thì sẽ còn dư thừa hơn nữa để đặt bản thân vào cuộc gọi. Bài viết: 3,4553,455 Chủ đề: 100100 Tham gia: Tháng 9 năm 2016Sep 2016 Danh tiếng: 170 143 Trích dẫn: 'Bản thân' đó không cần phải nằm trong các thông số là một triệu chứng của bản thân là dự phòng, nhưng có vẻ như nhóm Python Dev không muốn chấp nhận điều này! class BankAccount(object): def __init__(self, initial_balance=0): self.balance = initial_balance def deposit(self, amount): self.balance += amount def withdraw(self, amount): self.balance -= amount def overdrawn(self): return self.balance < 0 my_account = BankAccount(15) my_account.withdraw(5) print my_account.balance3 rõ ràng là tốt hơn Bài viết: 5.1385,138 Chủ đề: 394394 Tham gia: Tháng 9 năm 2016Sep 2016 Danh tiếng: 170 170 Trích dẫn: 'Bản thân' đó không cần phải nằm trong các thông số là một triệu chứng của bản thân là dự phòng, nhưng có vẻ như nhóm Python Dev không muốn chấp nhận điều này!nilamo Wrote: It doesn't HAVE to be self...class BankAccount(object): def __init__(self, initial_balance=0): self.balance = initial_balance def deposit(self, amount): self.balance += amount def withdraw(self, amount): self.balance -= amount def overdrawn(self): return self.balance < 0 my_account = BankAccount(15) my_account.withdraw(5) print my_account.balance4 :p rõ ràng là tốt hơn Bài viết: 3,4553,455 Chủ đề: 100100 Tham gia: Tháng 9 năm 2016Sep 2016 Danh tiếng: 170 143 Trích dẫn: 'Bản thân' đó không cần phải nằm trong các thông số là một triệu chứng của bản thân là dự phòng, nhưng có vẻ như nhóm Python Dev không muốn chấp nhận điều này! class BankAccount(object): def __init__(self, initial_balance=0): self.balance = initial_balance def deposit(self, amount): self.balance += amount def withdraw(self, amount): self.balance -= amount def overdrawn(self): return self.balance < 0 my_account = BankAccount(15) my_account.withdraw(5) print my_account.balance6 should be a syntax error, so maybe I'm weird. Bản thân có bắt buộc trong Python không?Không giống như các ngôn ngữ lập trình khác, Python không sử dụng cú pháp của@@@để truy cập các thuộc tính thể hiện. Đây là lý do duy nhất tại sao bạn cần sử dụng biến bản thân trong Python. Ngôn ngữ chứa các phương thức cho phép thể hiện được truyền tự động nhưng không được nhận tự động.you need to use the self variable in Python. The language contains methods that allow the instance to be passed automatically but not received automatically.
Tôi có thể sử dụng cái này thay vì bản thân trong Python không?Bạn có thể sử dụng "" thay vì "bản thân" này nhiều như bạn muốn. Tuy nhiên, điều đó có thể gây nhầm lẫn cho một số công cụ kiểm tra mã cú pháp và kiểm tra mã. Sử dụng "bản thân" chỉ là một quy ước. Nó từ đâu ra vậy?. However, that might confuse some syntax highlighters and code inspection tools. Using "self" is just a convention. Where did "this" come from?
Điều gì xảy ra nếu bạn không sử dụng bản thân trong Python?Nếu không có lập luận tự, cùng một lớp không thể giữ thông tin cho cả hai đối tượng này.Tuy nhiên, vì lớp chỉ là một kế hoạch chi tiết, tự cho phép truy cập vào các thuộc tính và phương thức của từng đối tượng trong Python.Điều này cho phép mỗi đối tượng có các thuộc tính và phương thức riêng.
Tự () trong Python là gì?Tham số tự là tham chiếu đến thể hiện hiện tại của lớp và được sử dụng để truy cập các biến thuộc về lớp.a reference to the current instance of the class, and is used to access variables that belongs to the class. |