Hàm __init__ và self trong python dùng để làm gì?

python

(nguyenductuan) #1

cho e hỏi là hàm init trong python là để làm j ạ??
tiện hỏi luôn là tại sao các hàm trong class cứ phải có self là sao ạ :confused:
ví dụ đoạn này ạ:
class MyStuff(object):

def __init__(self):
    self.tangerine = "And now a thousand years between"

def apple(self):
    print "I AM CLASSY APPLES!"

e cảm ơn.


Thắc mắc về Class, trong trỏ self trong python
(Lê Trần Đạt) #2

__init__ là hàm dựng hay constructor của một class. Khi một thực thể (instance) của một class được tạo ra thì hàm này sẽ được thực thi đầu tiên và một cách tự động

self giống như this trong các ngôn ngữ hướng đối tượng khác. Đối với các ngôn ngữ khác thì mình không cần phải truyền this hoặc self vào. Nhưng Python yêu cầu phải như thế.

self trong Python không nhất thiết phải là self mà có thể là dat hoặc dnh cũng được. Nhưng người ta sử dụng self để thể hiện đây là thực thể của object. Trong tiếng Anh self có thể hiểu là bản thân nó. Điều này giúp việc đọc code dễ hơn.


(nguyenductuan) #3

e hiểu rồi, cảm ơn a @ltd :))


(Lê Trần Đạt) #4

Em biết cách accept câu trả lời của anh là câu trả lời em chấp nhận không? Bấm vào nút trên post của anh nhé.


(Mạnh) #5

cũng đang học class này , thấy hơn khó , chưa hiểu vẫn đề lắm


([email protected]) #6

Khi một object được tạo ra (instantiate) thì đúng hơn, còn class được tạo ra khi code chạy qua đoạn định nghĩa class rồi :smile:


(Lê Trần Đạt) #7

Updated with thanks :heart_eyes:


(Ha Duy Phuong) #8
class Mystuff(object):
	def __init__(self):
		self.tangerine = "And now a thousand years between"
		print self.tangerine

	def apple(self):
		print "I AM CLASSY APPLES!"

Em dang tu hoc python theo Learn Python the Hard way toi ex40 gap kho khan nho anh chi giup do:

  • object o treen la bao gom hai def init va def apple phai khong ?
  • tangerine = “And now a thousand years between” co phai la bien co noi dung trong “And now a thousand years between”
  • khi chay thu class nay thi e chi in duoc ket qua la “And now a thousand years between” ma khong in ra duoc “I AM CLASSY APPLES!”
    -“init là hàm dựng hay constructor của một class. Khi một thực thể (instance) của một class được tạo ra thì hàm này sẽ được thực thi đầu tiên và một cách tự động” theo tra loi cua a Dat nhung e van khong hieu lam. Thuc the o day la gi?
  • seft la de truyen cai tangerine = “And now a thousand years between” vo cai init

(Quân Nguyễn) #9

thực thể cũng là object thôi, nhưng cụ thể hơn. Bạn có thể gọi nó là object cũng được cho dễ hiểu =)))
bạn ghi rõ đoạn code được không. function apple có nằm trong class hay không?
tangerine thì không liên quan gì đến apple hết. Câu lệnh gọi hàm tangerine mà không đả động gì đến apple thì sao in ra được i am classy apples??? Mấy cái này cơ bản quá luôn. Nói chung tổng kết lại bạn học lại cơ bản cho kỹ.


83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?