Thứ Tư, 11 tháng 12, 2013

Classes

http://docs.python.org/2/tutorial/classes.html

Cấu trúc class:


class Classname:
       <statement 1>

 
       <statement n>
Các class phải được định nghĩa trước khi được sử dụng
Thực tế , các statement trong class chính là các định nghĩa function
Khi một class difinition kết thúc, chúng ta sẽ tạo ra được một class object
Class object
Class objectsn hỗ trợ hai kiểu operations là attribute references và instantiation
1. Attribute references trong class có cú pháp chuẩn :
   Obj.name
Khi một Class Object được tạo ra thì sẽ có một namespace được tạo ra.Các name tham chiếu thích hợp là tất cả các tên tồn tại trong namespace đó
ví dụ:

class MyClass:
    """A simple example class"""
    i = 12345
    def f(self):
        return 'hello world'
thì MyClass.i và MyClass.f ở đây là các Valid Attribute references sẽ return lại số i và f function. Bạn có thể thay đổi giá trị của i bằng một phép gán
    __doc__ là một valid atrribute và MyClass.__doc__ sẽ return lại docstring của Class

Class instantiation được sử dụng như function instantiation. Nghĩa là coi như class object là một parameterless function . tạo ra một instance mới của class. ví dụ:
 x = MyClass
 tạo ra một instance mới của class và gắn nó với local variable x

 "__init__()" Method
Nhằm tạo ra một object rỗng để thỏa mãn các trạng thái khởi tạo xác định mà chúng ta muốn:
   
def __init__(self):
       self.data = []

Khi sử dụng __init__() method, class instantiation sẽ tự động liên kết __init__() với class instance mới vừa đc tạo x

__init__() method có thể có các đối số linh hoạt hơn:


Class complex():
  def __init__(self,realpart,imagpart):
      self.r = self.realpart
      self.i = self.imagpart


x= complex(3,4)
x.i  ==>4
x.r ==>3

Instance Object:

instance object chỉ cho phép operation với attribute reference . Có hai loại valid attribute names là "data attribite " và "method"

Ví dụ:
x.counter = 1 # x  đã được gọi như ở trên

thì x.couter chính là data attributer

"method" là một function thuộc một instance object
trong ví dụ trên:
MyClass.f là một function
x.f là một "Method object" là một function thuộc class object

Thông thường ta có thể gọi hàm f theo cách sau:
x.f()
ta có thể lưu nó lại và gọi khi cần:
ví dụ:

xf=x.f
while True:
    print xf()

Cứ như vây, hàm f sẽ được gọi cho đến khi bạn kết thúc chương trình 
Thực ra thì bạn chằng cần lưu cũng được vì đoạn trên có thể viết đơn giản như sau:
x = MyClass()
while True:
    print x.f()
và nó sẽ cứ chạy mãi .he. Nhưng với các chương trình dài nó có thể có nhiều tác dụng.heheh


còn nữa, nhưng học đến đây để viết class's syntax thôi :))




 


 

Không có nhận xét nào:

Đăng nhận xét