Làm thế nào để bạn sử dụng một phương thức này trong một phương thức khác trong python?

Tôi có 2 lớp

class impute[model]:
    
    def __init__[self]:
        
        super[].__init__[]        
        for i in ['MasVnrType', 'BsmtQual', 'BsmtFinType1', 'GarageType', 'GarageFinish']:
            self.mode_impute[self.x, i]
        
    def mode_impute[self]:
        mode_val = self.df6[self.var].value_counts[].index[0]
        self.df6[self.var].fillna[mode_val, inplace = True]

m = impute[]
0 và
class impute[model]:
    
    def __init__[self]:
        
        super[].__init__[]        
        for i in ['MasVnrType', 'BsmtQual', 'BsmtFinType1', 'GarageType', 'GarageFinish']:
            self.mode_impute[self.x, i]
        
    def mode_impute[self]:
        mode_val = self.df6[self.var].value_counts[].index[0]
        self.df6[self.var].fillna[mode_val, inplace = True]

m = impute[]
1. Tôi đang định nghĩa một hàm
class impute[model]:
    
    def __init__[self]:
        
        super[].__init__[]        
        for i in ['MasVnrType', 'BsmtQual', 'BsmtFinType1', 'GarageType', 'GarageFinish']:
            self.mode_impute[self.x, i]
        
    def mode_impute[self]:
        mode_val = self.df6[self.var].value_counts[].index[0]
        self.df6[self.var].fillna[mode_val, inplace = True]

m = impute[]
2 bên trong
class impute[model]:
    
    def __init__[self]:
        
        super[].__init__[]        
        for i in ['MasVnrType', 'BsmtQual', 'BsmtFinType1', 'GarageType', 'GarageFinish']:
            self.mode_impute[self.x, i]
        
    def mode_impute[self]:
        mode_val = self.df6[self.var].value_counts[].index[0]
        self.df6[self.var].fillna[mode_val, inplace = True]

m = impute[]
1. Bây giờ tôi muốn gọi
class impute[model]:
    
    def __init__[self]:
        
        super[].__init__[]        
        for i in ['MasVnrType', 'BsmtQual', 'BsmtFinType1', 'GarageType', 'GarageFinish']:
            self.mode_impute[self.x, i]
        
    def mode_impute[self]:
        mode_val = self.df6[self.var].value_counts[].index[0]
        self.df6[self.var].fillna[mode_val, inplace = True]

m = impute[]
2 bên trong
class impute[model]:
    
    def __init__[self]:
        
        super[].__init__[]        
        for i in ['MasVnrType', 'BsmtQual', 'BsmtFinType1', 'GarageType', 'GarageFinish']:
            self.mode_impute[self.x, i]
        
    def mode_impute[self]:
        mode_val = self.df6[self.var].value_counts[].index[0]
        self.df6[self.var].fillna[mode_val, inplace = True]

m = impute[]
1. Làm thế nào tôi có thể gọi nó?

class impute[model]:
    
    def __init__[self]:
        super[].__init__[]
        pass
    
    def mode_impute[self]:
        mode_val = self.df6[self.var].value_counts[].index[0]
        self.df6[self.var].fillna[mode_val, inplace = True]
        
    for i in ['MasVnrType', 'BsmtQual', 'BsmtFinType1', 'GarageType', 'GarageFinish']:
        self.mode_impute[self.x, i]

Đoạn mã trên cho tôi lỗi

class impute[model]:
    
    def __init__[self]:
        
        super[].__init__[]        
        for i in ['MasVnrType', 'BsmtQual', 'BsmtFinType1', 'GarageType', 'GarageFinish']:
            self.mode_impute[self.x, i]
        
    def mode_impute[self]:
        mode_val = self.df6[self.var].value_counts[].index[0]
        self.df6[self.var].fillna[mode_val, inplace = True]

m = impute[]
6

CHỈNH SỬA 1

Tôi đã áp dụng các thay đổi như đề xuất trong nhận xét

class impute[model]:
    
    def __init__[self]:
        
        super[].__init__[]        
        for i in ['MasVnrType', 'BsmtQual', 'BsmtFinType1', 'GarageType', 'GarageFinish']:
            self.mode_impute[self.x, i]
        
    def mode_impute[self]:
        mode_val = self.df6[self.var].value_counts[].index[0]
        self.df6[self.var].fillna[mode_val, inplace = True]

m = impute[]

Dòng cuối cùng nơi tôi tạo một thể hiện của lớp mang lại cho tôi lỗi

class impute[model]:
    
    def __init__[self]:
        
        super[].__init__[]        
        for i in ['MasVnrType', 'BsmtQual', 'BsmtFinType1', 'GarageType', 'GarageFinish']:
            self.mode_impute[self.x, i]
        
    def mode_impute[self]:
        mode_val = self.df6[self.var].value_counts[].index[0]
        self.df6[self.var].fillna[mode_val, inplace = True]

m = impute[]
0

Tái bút. Tôi mới bắt đầu học OOP cho python nên vui lòng giải thích câu trả lời của bạn một cách đơn giản và dễ hiểu. Cảm ơn bạn

anteboy65
Con én không tải

Bài viết. 2

Chủ đề. 1

Đã tham gia. Tháng 9 năm 2019

Danh tiếng. 0

11-09-2019, 12. 01 PM [Bài đăng này đã được sửa đổi lần cuối. 11-09-2019, 12. 15 PM bởi buran. ]

Không chắc đây có phải là suy nghĩ đúng hay không nhưng dù sao thì đây cũng là điều tôi đang cố gắng thực hiện.

Tôi có một Lớp bao gồm một số biến và một số phương thức. Lớp này có một số mã được thực thi khi khởi tạo một đối tượng 'a['Gọi một phương thức']'. Tôi có thể gọi phương thức a[] nhưng khi phương thức a[] gọi phương thức b[] thì tất cả đều thất bại.

Lý do của việc này là gì và nên giải quyết như thế nào?
Đó là khi lệnh gọi b['aa'] thực thi, tôi gặp lỗi. 'TênLỗi. tên chung 'b' không được xác định'
Tại sao phương thức a[] không thể tiếp cận phương thức b[]?

class TestClass:

    def __init__[self]:
        pass

    def b[name]:
        print '---b---', name

    def a[name]:
        print '---a---', name
        b['aa']

    a['Call a-method']

Hồi đáp

Tìm thấy

Hồi đáp

anteboy65
Con én không tải

Bài viết. 2

Chủ đề. 1

Đã tham gia. Tháng 9 năm 2019

Danh tiếng. 0

11-09-2019, 01. 20 PM [Bài đăng này đã được sửa đổi lần cuối. Sep-11-2019, 01. 20h bởi anteboy65. ]

Cảm ơn. Đã thử gắn thẻ mã python theo hướng dẫn.

Tôi đã sửa đổi mã của bạn một chút để mã hoạt động trong Python 2. 7
Sự khác biệt là tôi muốn gọi phương thức a từ bên trong lớp. Như bạn thấy trong ví dụ đầu tiên của tôi,
intendation of the call "a['Call a-method']" is inside the class, not outside. My first example works if I comment line #13 [b['aa']].

class TestClass:
    def __init__[self, name]:
        self.methoda[name]

    def methodb[self, name]:
        print["---b---{}".format[name]]

    def methoda[self, name]:
        print["---a---{}".format[name]]
        self.methodb["aa"]

    self.methoda['Call a-method from within class'] # This doesn't.

TestClass["Call a-method"] # This works

Hồi đáp

Tìm thấy

Hồi đáp

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách truy cập phương thức của một lớp khác từ lớp của bạn hoặc lớp con bằng cách sử dụng dấu chấm[. ] nhà điều hành

Gọi phương thức từ một lớp khác trong một lớp khác trong Python

chúng ta có thể gọi phương thức của lớp khác bằng cách sử dụng tên lớp và hàm của lớp đó với toán tử dấu chấm.
ví dụ. -
nếu tên lớp thứ nhất là lớp A và phương thức của nó là method_A
và lớp thứ hai là lớp B và phương thức của nó là method_B
then we can call method_A from class B by following way:

class A:
     method_A[self]:
      {}
class B:
     method_B[self]:
     A.method_A[]   [like this ....]
     {}

   
Details:
         A: class name
         .: dot operator
method_A[]: method of class A. 

 

bây giờ tôi sẽ tạo một lớp cha đầu tiên có tên phương thức sum sẽ trả về tổng của 2 số

#create parent class whose method is called by your class 
class parent:
    def sum[self,a,b]:
        return a+b

bây giờ tôi sẽ tạo một lớp khác từ đó chúng ta sẽ gọi phương thức sum của lớp cha

class your_class:
    def Fun[self,a,b]:
        self.a=a
        self.b=b
        '''
        we can call method of another class
        by using their class name and function with dot operator.
        '''
        x=parent.sum[self,a,b]
        print["sum=",x]

Hoàn thành mã trong một cửa sổ duy nhất

Chương trình Python để gọi một phương thức từ một lớp khác

________số 8

Chạy mã này trực tuyến

đầu ra

enter 1st no.6
enter 2nd no.5
sum= 11

Bạn cũng có thể đọc

  • Giới thiệu về lớp và đối tượng trong python
  • Khái niệm về Kế thừa, Siêu lớp và Lớp con trong Python

8 phản hồi cho “Cách gọi phương thức của một lớp khác trong lớp của bạn trong Python”

  1. shaik. mohammed arshad nói.

    Tôi nghĩ cần giải thích một chút về cách truy cập phương thức từ lớp cha mà không cần
    tạo đối tượng cho lớp cha

  2. Shan nói.

    nếu các lớp này là các tệp py khác nhau thì sao?

  3. tiro cấp dưới nói.

    xin chào, cảm ơn vì hướng dẫn của bạn, tôi đang xem nó ở Papua new guinea và tôi rất may mắn

    tôi có một câu hỏi. và đó là xin vui lòng, bạn có thể giải thích sự khác biệt giữa lớp, chính và chức năng và cách tự kết hợp chúng

    • Tanya nói.

      lớp là một bản thiết kế để mọi thứ có thể được tạo bên trong nó và sau đó lớp đó có thể được sử dụng nhiều lần trong cùng một chương trình hoặc thậm chí bằng cách nhập lớp đó vào một chương trình khác [còn được gọi là mô-đun trong python]

      Bạn có thể sử dụng một phương thức bên trong một phương thức Python khác không?

      Nếu bạn định nghĩa một hàm bên trong một hàm khác, thì bạn đang tạo một hàm bên trong, còn được gọi là hàm lồng nhau . Trong Python, các hàm bên trong có quyền truy cập trực tiếp vào các biến và tên mà bạn xác định trong hàm kèm theo.

      Làm cách nào để gọi một hàm trong một hàm khác trong lớp Python?

      Hàm gọi một Hàm khác được gọi là Gọi Hàm và hàm được gọi bởi Hàm khác gọi là Hàm được gọi. Chức năng thực thi hoạt động như thế nào? .

      Bạn có thể có 2 phương thức cùng tên Python không?

      Python không hỗ trợ nạp chồng hàm . Khi chúng ta định nghĩa nhiều hàm có cùng tên, hàm sau luôn ghi đè hàm trước và do đó, trong không gian tên, sẽ luôn có một mục duy nhất đối với mỗi tên hàm.

      Bạn có thể gọi các phương thức khác trong init không?

      Chúng ta có thể gọi các phương thức khác của lớp từ phương thức __init__ bằng cách sử dụng từ khóa self .

Chủ Đề