Hướng dẫn call function in __init__ python - gọi hàm trong __init__ python

Tôi đang viết một số mã lấy tên tệp, mở tệp và phân tích một số dữ liệu. Tôi muốn làm điều này trong một lớp học. Mã sau hoạt động:

class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None

        def parse_file():
            #do some parsing
            self.stat1 = result_from_parse1
            self.stat2 = result_from_parse2
            self.stat3 = result_from_parse3
            self.stat4 = result_from_parse4
            self.stat5 = result_from_parse5

        parse_file()

Nhưng nó liên quan đến việc tôi đặt tất cả các máy móc phân tích cú pháp vào phạm vi của hàm

class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None
        parse_file()

    def parse_file():
        #do some parsing
        self.stat1 = result_from_parse1
        self.stat2 = result_from_parse2
        self.stat3 = result_from_parse3
        self.stat4 = result_from_parse4
        self.stat5 = result_from_parse5
2 cho lớp học của tôi. Bây giờ có vẻ tốt cho mã đơn giản hóa này, nhưng chức năng
class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None
        parse_file()

    def parse_file():
        #do some parsing
        self.stat1 = result_from_parse1
        self.stat2 = result_from_parse2
        self.stat3 = result_from_parse3
        self.stat4 = result_from_parse4
        self.stat5 = result_from_parse5
3 cũng có khá nhiều cấp độ. Tôi muốn xác định chức năng
class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None
        parse_file()

    def parse_file():
        #do some parsing
        self.stat1 = result_from_parse1
        self.stat2 = result_from_parse2
        self.stat3 = result_from_parse3
        self.stat4 = result_from_parse4
        self.stat5 = result_from_parse5
4 là hàm lớp như bên dưới:

class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None
        parse_file()

    def parse_file():
        #do some parsing
        self.stat1 = result_from_parse1
        self.stat2 = result_from_parse2
        self.stat3 = result_from_parse3
        self.stat4 = result_from_parse4
        self.stat5 = result_from_parse5

Tất nhiên mã này không hoạt động vì hàm

class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None
        parse_file()

    def parse_file():
        #do some parsing
        self.stat1 = result_from_parse1
        self.stat2 = result_from_parse2
        self.stat3 = result_from_parse3
        self.stat4 = result_from_parse4
        self.stat5 = result_from_parse5
4 không nằm trong phạm vi của hàm
class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None
        parse_file()

    def parse_file():
        #do some parsing
        self.stat1 = result_from_parse1
        self.stat2 = result_from_parse2
        self.stat3 = result_from_parse3
        self.stat4 = result_from_parse4
        self.stat5 = result_from_parse5
2. Có cách nào để gọi chức năng lớp từ trong vòng ____ của lớp đó không? Hay tôi đang nghĩ về điều này sai cách?

Ngày nay, một lập trình viên chắc chắn sẽ bắt gặp lập trình hướng đối tượng (OOP) trong sự nghiệp của họ. Là một ngôn ngữ lập trình hiện đại, Python cung cấp tất cả các phương tiện để thực hiện triết lý hướng đối tượng. Phương pháp

class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None
        parse_file()

    def parse_file():
        #do some parsing
        self.stat1 = result_from_parse1
        self.stat2 = result_from_parse2
        self.stat3 = result_from_parse3
        self.stat4 = result_from_parse4
        self.stat5 = result_from_parse5
2 là cốt lõi của OOP và được yêu cầu để tạo các đối tượng.


Trong bài viết này, chúng tôi sẽ xem xét mô hình của lập trình hướng đối tượng trước khi giải thích lý do và cách sử dụng phương pháp

class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None
        parse_file()

    def parse_file():
        #do some parsing
        self.stat1 = result_from_parse1
        self.stat2 = result_from_parse2
        self.stat3 = result_from_parse3
        self.stat4 = result_from_parse4
        self.stat5 = result_from_parse5
2. & NBSP;

Lập trình hướng đối tượng là gì?

Lập trình hướng đối tượng (OOP) là một mẫu lập trình bao gồm xác định các đối tượng và tương tác với chúng. Một đối tượng là một tập hợp các biến và hàm phức tạp và có thể được sử dụng để biểu diễn các thực thể thực như nút, máy bay hoặc một người.

Để khai báo, khởi tạo và thao tác các đối tượng trong Python, chúng tôi sử dụng các lớp. Họ phục vụ như các mẫu & nbsp; từ đó các đối tượng được tạo ra. Sơ đồ sau đây minh họa ý tưởng này:

Chúng ta có thể thấy trong sơ đồ trên rằng lớp chó chứa các đặc điểm của chó cụ thể, chẳng hạn như màu giống và màu mắt, cũng như các khả năng chạy và đi bộ. Hãy bắt đầu bằng cách xác định một lớp học trong Python.

Lớp học là gì?

Một lớp xác định và cấu trúc tất cả các đối tượng được tạo từ nó. Bạn có thể xem lớp là một nhà máy đối tượng. Hãy để lấy ví dụ về một con chó sục Fox một giống chó. Từ quan điểm OOP, bạn có thể nghĩ

class Dog:                   

def __init__(self,dogBreed,dogEyeColor):
 
    self.breed = dogBreed       
    self.eyeColor = dogEyeColor...
0 như một lớp bao gồm các đặc điểm của chó như giống chó hoặc màu mắt của nó. Vì Fox Terrier là một con chó, chúng ta có thể tạo ra một đối tượng chó sẽ thừa hưởng các đặc điểm của lớp. Các lớp sử dụng các phương thức và hàm tạo để tạo và xác định các đối tượng.

Phương pháp đặc biệt và người dùng

Các phương thức là các chức năng trong một lớp được thiết kế để thực hiện một nhiệm vụ cụ thể. Python phân biệt giữa các phương thức do người dùng xác định, được viết bởi lập trình viên và các phương pháp đặc biệt được tích hợp vào ngôn ngữ. Một phương thức do người dùng xác định là một hàm được tạo bởi lập trình viên để phục vụ một mục đích cụ thể. Chẳng hạn, một lớp

class Dog:                   

def __init__(self,dogBreed,dogEyeColor):
 
    self.breed = dogBreed       
    self.eyeColor = dogEyeColor...
0 có thể có phương pháp
class Dog:                   

def __init__(self,dogBreed,dogEyeColor):
 
    self.breed = dogBreed       
    self.eyeColor = dogEyeColor...
2 mà đối tượng chó có thể sử dụng. Lập trình viên tạo ra phương thức này và có nó thực hiện các hành động cụ thể.

Các phương pháp đặc biệt được xác định bởi một dấu gạch dưới kép ở hai bên tên của họ, chẳng hạn như

class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None
        parse_file()

    def parse_file():
        #do some parsing
        self.stat1 = result_from_parse1
        self.stat2 = result_from_parse2
        self.stat3 = result_from_parse3
        self.stat4 = result_from_parse4
        self.stat5 = result_from_parse5
2. Python sử dụng các phương pháp đặc biệt để tăng cường chức năng của các lớp. Hầu hết chúng hoạt động trong nền và được gọi tự động khi cần chương trình. Bạn không thể gọi chúng một cách rõ ràng. Chẳng hạn, khi bạn tạo một đối tượng mới, Python sẽ tự động gọi phương thức
class Dog:                   

def __init__(self,dogBreed,dogEyeColor):
 
    self.breed = dogBreed       
    self.eyeColor = dogEyeColor...
4, từ đó gọi phương thức
class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None
        parse_file()

    def parse_file():
        #do some parsing
        self.stat1 = result_from_parse1
        self.stat2 = result_from_parse2
        self.stat3 = result_from_parse3
        self.stat4 = result_from_parse4
        self.stat5 = result_from_parse5
2.
class Dog:                   

def __init__(self,dogBreed,dogEyeColor):
 
    self.breed = dogBreed       
    self.eyeColor = dogEyeColor...
6Method được gọi khi bạn
class Dog:                   

def __init__(self,dogBreed,dogEyeColor):
 
    self.breed = dogBreed       
    self.eyeColor = dogEyeColor...
7 một đối tượng. Mặt khác, các phương thức do người dùng xác định, như
class Dog:                   

def __init__(self,dogBreed,dogEyeColor):
 
    self.breed = dogBreed       
    self.eyeColor = dogEyeColor...
8, được gọi là rõ ràng.

Các hàm tạo

Trình xây dựng là một phương pháp đặc biệt mà chương trình gọi là tạo đối tượng. Hàm tạo được sử dụng trong lớp để khởi tạo các thành viên dữ liệu vào đối tượng. Với ví dụ

class Dog:                   

def __init__(self,dogBreed,dogEyeColor):
 
    self.breed = dogBreed       
    self.eyeColor = dogEyeColor...
9 Class của chúng tôi, bạn có thể sử dụng một hàm tạo để gán các đặc điểm chó cho mỗi đối tượng
...Tomita = Dog("Fox Terrier","brown")...
0. Phương pháp đặc biệt
class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None
        parse_file()

    def parse_file():
        #do some parsing
        self.stat1 = result_from_parse1
        self.stat2 = result_from_parse2
        self.stat3 = result_from_parse3
        self.stat4 = result_from_parse4
        self.stat5 = result_from_parse5
2 là hàm tạo Python.

Với sự hiểu biết về lập trình và các lớp theo định hướng đối tượng, bây giờ hãy xem xét cách phương thức

class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None
        parse_file()

    def parse_file():
        #do some parsing
        self.stat1 = result_from_parse1
        self.stat2 = result_from_parse2
        self.stat3 = result_from_parse3
        self.stat4 = result_from_parse4
        self.stat5 = result_from_parse5
2 hoạt động trong chương trình Python.

Tầm quan trọng của các đối tượng trong Python

Chúng tôi không phải lúc nào cũng thấy nó khi chúng tôi viết một chương trình, nhưng các đối tượng là trung tâm của cách thức hoạt động của Python. Khi chúng tôi khai báo một biến đơn giản trong Python, một đối tượng được tạo trong nền.

Nếu chúng ta thực thi bit mã sau:


Python sử dụng lớp STR có chứa các thuộc tính và phương thức, giống hệt như các thuộc tính bạn tạo trong mã của riêng bạn, ngoại trừ tất cả đều xảy ra trong nền.

Phương thức __init__ hoạt động như thế nào? & Nbsp;

Phương pháp

class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None
        parse_file()

    def parse_file():
        #do some parsing
        self.stat1 = result_from_parse1
        self.stat2 = result_from_parse2
        self.stat3 = result_from_parse3
        self.stat4 = result_from_parse4
        self.stat5 = result_from_parse5
2 là tương đương Python của hàm tạo C ++ theo cách tiếp cận hướng đối tượng. ________ 12 & nbsp; Chức năng được gọi là mỗi khi một đối tượng được tạo từ một lớp. Phương thức
class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None
        parse_file()

    def parse_file():
        #do some parsing
        self.stat1 = result_from_parse1
        self.stat2 = result_from_parse2
        self.stat3 = result_from_parse3
        self.stat4 = result_from_parse4
        self.stat5 = result_from_parse5
2 cho phép lớp khởi tạo các thuộc tính của đối tượng và không phục vụ mục đích nào khác. Nó chỉ được sử dụng trong các lớp. & NBSP;

Tạo một lớp học

Hãy bắt đầu bằng cách tạo một lớp học:

class Dog:                   

def __init__(self,dogBreed,dogEyeColor):
 
    self.breed = dogBreed       
    self.eyeColor = dogEyeColor...

Đầu tiên, chúng tôi tuyên bố con chó lớp bằng cách sử dụng từ khóa

...Tomita = Dog("Fox Terrier","brown")...
6. Chúng tôi sử dụng từ khóa
...Tomita = Dog("Fox Terrier","brown")...
7 để xác định hàm hoặc phương thức, chẳng hạn như
class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None
        parse_file()

    def parse_file():
        #do some parsing
        self.stat1 = result_from_parse1
        self.stat2 = result_from_parse2
        self.stat3 = result_from_parse3
        self.stat4 = result_from_parse4
        self.stat5 = result_from_parse5
2Method. Như bạn có thể thấy,
class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None
        parse_file()

    def parse_file():
        #do some parsing
        self.stat1 = result_from_parse1
        self.stat2 = result_from_parse2
        self.stat3 = result_from_parse3
        self.stat4 = result_from_parse4
        self.stat5 = result_from_parse5
2Method khởi tạo hai thuộc tính:
...print("This dog is a",tomita.breed,"and its eyes are",tomita.eyeColor)
0 và ________ 41. & nbsp;

Bây giờ chúng tôi sẽ thấy cách vượt qua các tham số này khi khai báo một đối tượng. Đây là nơi chúng ta cần từ khóa để liên kết các thuộc tính của đối tượng với các đối số nhận được.

Tạo một đối tượng

Tiếp theo, chúng tôi sẽ tạo một đối tượng hoặc thể hiện của lớp

...print("This dog is a",tomita.breed,"and its eyes are",tomita.eyeColor)
2:

...Tomita = Dog("Fox Terrier","brown")...

Khi chúng ta tạo đối tượng

...print("This dog is a",tomita.breed,"and its eyes are",tomita.eyeColor)
3 (là tên chó), trước tiên chúng ta xác định lớp mà nó được tạo (chó). Tiếp theo, chúng tôi vượt qua các đối số của Fox Fox Terrier, và Brown Brown, tương ứng với các tham số tương ứng của
class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None
        parse_file()

    def parse_file():
        #do some parsing
        self.stat1 = result_from_parse1
        self.stat2 = result_from_parse2
        self.stat3 = result_from_parse3
        self.stat4 = result_from_parse4
        self.stat5 = result_from_parse5
2Method của lớp
...print("This dog is a",tomita.breed,"and its eyes are",tomita.eyeColor)
2.

Phương thức

class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None
        parse_file()

    def parse_file():
        #do some parsing
        self.stat1 = result_from_parse1
        self.stat2 = result_from_parse2
        self.stat3 = result_from_parse3
        self.stat4 = result_from_parse4
        self.stat5 = result_from_parse5
2 sử dụng từ khóa ____47 để gán các giá trị được truyền làm đối số cho các thuộc tính đối tượng
...print("This dog is a",tomita.breed,"and its eyes are",tomita.eyeColor)
8 và
...print("This dog is a",tomita.breed,"and its eyes are",tomita.eyeColor)
9.

Truy cập các thuộc tính đối tượng

Để truy cập một thuộc tính của đối tượng Fox Terrier hoàn toàn mới của bạn, bạn có thể sử dụng ký hiệu dấu chấm (.) Để có được giá trị bạn cần. Một câu lệnh in giúp chúng tôi chứng minh cách thức hoạt động của nó:

...print("This dog is a",tomita.breed,"and its eyes are",tomita.eyeColor)

Việc thực thi mã trên cho chúng ta kết quả sau:

This dog is a Fox Terrier and its eyes are brown

Chương trình truy cập

This dog is a Fox Terrier and its eyes are brown
0Attribution và hiển thị chúng đúng cách.

Hàm tạo __init__ mặc định

Trong Python, một hàm tạo không nhất thiết cần các tham số được truyền cho nó. Có thể có tham số mặc định. Một hàm tạo không có tham số bắt buộc được gọi là hàm tạo mặc định. Hãy để viết lại lớp của chúng tôi với một hàm tạo mặc định:

class Dog:                

def __init__(self, dogBreed="German Shepherd",dogEyeColor="Brown"): 
 
    self.breed = dogBreed   
    self.eyeColor = dogEyeColor

Nếu người dùng không nhập bất kỳ giá trị nào, thì hàm tạo sẽ gán cho người chăn cừu Đức và và Brown Brown là các thuộc tính.

Bây giờ chúng ta có thể tạo một thể hiện của chó mà không cần chỉ định bất kỳ tham số nào: & nbsp;

Vì không có đối số để vượt qua, chúng tôi sử dụng dấu ngoặc đơn trống sau tên lớp. Chúng ta vẫn có thể hiển thị các thuộc tính của đối tượng:

print("This dog is a",tomita.breed,"and its eyes are",tomita.eyeColor)

Điều này cung cấp cho chúng tôi đầu ra sau:

This dog is a German Shepherd and its eyes are Brown

Mã đơn giản này hoạt động hoàn hảo.

Học cách viết mã với sự udacity

Phương pháp

class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None
        parse_file()

    def parse_file():
        #do some parsing
        self.stat1 = result_from_parse1
        self.stat2 = result_from_parse2
        self.stat3 = result_from_parse3
        self.stat4 = result_from_parse4
        self.stat5 = result_from_parse5
2 là tối quan trọng đối với lập trình hướng đối tượng của Python .. Trong bài viết này, chúng tôi đã giải thích vai trò của phương pháp
class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None
        parse_file()

    def parse_file():
        #do some parsing
        self.stat1 = result_from_parse1
        self.stat2 = result_from_parse2
        self.stat3 = result_from_parse3
        self.stat4 = result_from_parse4
        self.stat5 = result_from_parse5
2 trong bối cảnh của định nghĩa OOP và lớp. Phương pháp
class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None
        parse_file()

    def parse_file():
        #do some parsing
        self.stat1 = result_from_parse1
        self.stat2 = result_from_parse2
        self.stat3 = result_from_parse3
        self.stat4 = result_from_parse4
        self.stat5 = result_from_parse5
2 là một trong nhiều phương pháp đặc biệt được tích hợp vào Python và các lập trình viên có thể sử dụng nó có hoặc không có tham số cho mỗi lớp họ tạo.

Bạn muốn thực sự đưa kỹ năng mã hóa của bạn lên một tầm cao mới?

Giới thiệu của chúng tôi về chương trình nanodegree lập trình là bước tiếp theo của bạn. Chúng tôi sẽ dạy cho bạn nền tảng của mã hóa và bạn nghĩ và giải quyết vấn đề như một lập trình viên!

Hoàn thành ví dụ mã

Ví dụ 1:

class Dog:                

def __init__(self, dogBreed,dogEyeColor): 
 
    self.breed = dogBreed   
    self.eyeColor = dogEyeColor

tomita = Dog("Fox Terrier","brown")

print("This dog is a",tomita.breed,"and his eyes are",tomita.eyeColor)

Ví dụ 2:

class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None
        parse_file()

    def parse_file():
        #do some parsing
        self.stat1 = result_from_parse1
        self.stat2 = result_from_parse2
        self.stat3 = result_from_parse3
        self.stat4 = result_from_parse4
        self.stat5 = result_from_parse5
0

Ví dụ 3:

class MyClass():
    def __init__(self, filename):
        self.filename = filename 

        self.stat1 = None
        self.stat2 = None
        self.stat3 = None
        self.stat4 = None
        self.stat5 = None
        parse_file()

    def parse_file():
        #do some parsing
        self.stat1 = result_from_parse1
        self.stat2 = result_from_parse2
        self.stat3 = result_from_parse3
        self.stat4 = result_from_parse4
        self.stat5 = result_from_parse5
1

Bạn có thể gọi chức năng trong init Python không?

Sử dụng self.f () để gọi một phương thức lớp bên trong __init__ trong định nghĩa phương thức của __init __ (tự), hãy gọi tự.f () trong đó f là tên của phương thức lớp. f() to call a class method inside of __init__ Within the method definition of __init__(self) , call self. f() where f is the name of the class method.

__ gọi __ chức năng trong Python là gì?

Phương thức __call__ cho phép các lập trình viên Python viết các lớp trong đó các trường hợp hoạt động như các hàm và có thể được gọi giống như một hàm.enables Python programmers to write classes where the instances behave like functions and can be called like a function.

Chúng ta có thể gọi một hàm bên trong một hàm tạo trong Python không?

Một hàm tạo có thể gọi các phương thức, có.Một phương thức chỉ có thể gọi một hàm tạo theo cùng một cách khác có thể: bằng cách tạo một thể hiện mới.. A method can only call a constructor in the same way anything else can: by creating a new instance.

Làm thế nào để bạn gọi một chức năng trong Python?

Bản tóm tắt.Để sử dụng các hàm trong Python, bạn viết tên hàm (hoặc biến trỏ đến đối tượng hàm) theo sau là dấu ngoặc đơn (để gọi hàm).Nếu hàm đó chấp nhận các đối số (như hầu hết các hàm), thì bạn sẽ chuyển các đối số bên trong dấu ngoặc đơn khi bạn gọi hàm.write the function name (or the variable that points to the function object) followed by parentheses (to call the function). If that function accepts arguments (as most functions do), then you'll pass the arguments inside the parentheses as you call the function.