banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Hỏi về phuơng thức trong Python.  XML
  [Question]   Hỏi về phuơng thức trong Python. 24/04/2012 21:02:41 (+0700) | #1 | 262008
[Avatar]
ovaner
Member

[Minus]    0    [Plus]
Joined: 01/05/2011 02:51:16
Messages: 2
Offline
[Profile] [PM]
Mình mới học lập trình Python, có một số hàm sử dụng các phuơng thức như : __init__, __doc__, __copy__, __times__, ...Mình không hiểu cái này lắm...ai bít có thể giải thích thêm cho mình được không...Cảm ơn..!!
p/s : Mạn phép xin thêm một ví dụ nhỏ.. smilie
[Up] [Print Copy]
  [Question]   Hỏi về phuơng thức trong Python. 25/04/2012 10:08:55 (+0700) | #2 | 262028
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
Trong Python, những gì bắt đầu và kết thúc bởi 2 dấu gạch dưới đều được coi là đặc biệt. Có thể xem qua các methods, attributes, ... này bằng lệnh:
Code:
$ grep -oh '__[A-Za-z][A-Za-z]*__' /usr/lib/python2.7/*.py | sort | uniq


__init__ là một special method. Nó được gọi tự động khi bạn tạo một instance mới của một class.

Ví dụ:
giả sử bạn có một class Student với các attributes như: name, age, ...
Code:
>>> class Student:
...     def __init__(self, n, a):
...         self.name = n
...         self.age = a

khi bạn tạo một instance mới của class này:
Code:
>>> s = Student("ovaner", 18)

thì __init__ sẽ được tự động gọi, các attributes name, age sẽ được "gắn" vào object s:
Code:
>>> s.name
'ovaner'
>>> s.age
18


__doc__ là một special attribute. Đơn giản nó là một string miêu tả về object (module, class, method, function) thôi.

Quay trở lại ví dụ trên, nếu bạn viết thêm docstring cho Student class và __init__ method:
Code:
>>> class Student:
...     """Student class"""
...     def __init__(self, n, a):
...         """init special method"""
...         self.name = n
...         self.age = a

thì khi gọi `s.__doc__` hoặc `s.__init__.__doc__` bạn sẽ có:
Code:
>>> s = Student("ovaner", 18)
>>> s.__doc__
'Student class'
>>> s.__init__.__doc__
'init special method'


Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Hỏi về phuơng thức trong Python. 26/04/2012 09:57:44 (+0700) | #3 | 262075
[Avatar]
ovaner
Member

[Minus]    0    [Plus]
Joined: 01/05/2011 02:51:16
Messages: 2
Offline
[Profile] [PM]

quanta wrote:
Trong Python, những gì bắt đầu và kết thúc bởi 2 dấu gạch dưới đều được coi là đặc biệt.
 

Tks __quanta__ smilie
[Up] [Print Copy]
  [Question]   Hỏi về phuơng thức trong Python. 15/05/2012 21:10:51 (+0700) | #4 | 263242
monday1010
Member

[Minus]    0    [Plus]
Joined: 13/12/2008 23:18:55
Messages: 33
Offline
[Profile] [PM]
__Tks__quanta__smilie__
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|