Hướng dẫn how do i use a variable from another class in python? - làm cách nào để sử dụng một biến từ một lớp khác trong python?

53

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang viết một chương trình đang sử dụng nhiều lớp. Tôi có một lớp dành riêng để xác định các giá trị cho một tập hợp các biến. Sau đó tôi muốn có thể truy cập các giá trị của các biến đó với các lớp khác. Mã của tôi trông như sau:

class ClassA[object]:
    def __init__[self]:
        self.var1 = 1
        self.var2 = 2

    def methodA[self]:
        self.var1 = self.var1 + self.var2
        return self.var1


class ClassB[ClassA]:
    def __init__[self]:
        self.var1 = ?
        self.var2 = ?

object1 = ClassA[]
sum = object1.methodA[]
print sum

Tôi sử dụng Classa để khởi tạo 2 biến [var1 và var2]. Sau đó, tôi sử dụng Phương thức để thêm chúng, lưu kết quả dưới dạng var1 [tôi nghĩ điều này sẽ tạo ra var1 = 3 và var2 = 2]. Điều tôi muốn biết là làm thế nào tôi có lớp sau đó có thể nhận được các giá trị cho var1 và var2 từ classa?

That1Guy

6.8494 Huy hiệu vàng48 Huy hiệu bạc57 Huy hiệu Đồng4 gold badges48 silver badges57 bronze badges

Đã hỏi ngày 15 tháng 11 năm 2013 lúc 4:54Nov 15, 2013 at 4:54

1

var1var2 là các biến thể hiện. Điều đó có nghĩa là bạn phải gửi phiên bản của

class ClassA[object]:
    def __init__[self]:
        self.var1 = 1
        self.var2 = 2

    def methodA[self]:
        self.var1 = self.var1 + self.var2
        return self.var1



class ClassB[ClassA]:
    def __init__[self, class_a]:
        self.var1 = class_a.var1
        self.var2 = class_a.var2

object1 = ClassA[]
sum = object1.methodA[]
object2 = ClassB[object1]
print sum
0 đến
class ClassA[object]:
    def __init__[self]:
        self.var1 = 1
        self.var2 = 2

    def methodA[self]:
        self.var1 = self.var1 + self.var2
        return self.var1



class ClassB[ClassA]:
    def __init__[self, class_a]:
        self.var1 = class_a.var1
        self.var2 = class_a.var2

object1 = ClassA[]
sum = object1.methodA[]
object2 = ClassB[object1]
print sum
1 để ClassB truy cập nó, tức là:

class ClassA[object]:
    def __init__[self]:
        self.var1 = 1
        self.var2 = 2

    def methodA[self]:
        self.var1 = self.var1 + self.var2
        return self.var1



class ClassB[ClassA]:
    def __init__[self, class_a]:
        self.var1 = class_a.var1
        self.var2 = class_a.var2

object1 = ClassA[]
sum = object1.methodA[]
object2 = ClassB[object1]
print sum

Mặt khác - nếu bạn sử dụng các biến lớp, bạn có thể truy cập var1 và var2 mà không cần gửi Object1 làm tham số đến ClassB.

class ClassA[object]:
    var1 = 0
    var2 = 0
    def __init__[self]:
        ClassA.var1 = 1
        ClassA.var2 = 2

    def methodA[self]:
        ClassA.var1 = ClassA.var1 + ClassA.var2
        return ClassA.var1



class ClassB[ClassA]:
    def __init__[self]:
        print ClassA.var1
        print ClassA.var2

object1 = ClassA[]
sum = object1.methodA[]
object2 = ClassB[]
print sum

Tuy nhiên, lưu ý rằng các biến lớp được chia sẻ giữa tất cả các trường hợp của lớp.

Đã trả lời ngày 15 tháng 11 năm 2013 lúc 4:59Nov 15, 2013 at 4:59

Steinar Limasteinar LimaSteinar Lima

7.4612 Huy hiệu vàng37 Huy hiệu bạc40 Huy hiệu đồng2 gold badges37 silver badges40 bronze badges

1

Bạn có thể giải thích lý do tại sao bạn muốn làm điều này?

Bạn đang chơi xung quanh với các biến/thuộc tính thể hiện sẽ không di chuyển từ lớp này sang lớp khác [chúng thậm chí không phải là ____10, mà là một trường hợp cụ thể của

class ClassA[object]:
    def __init__[self]:
        self.var1 = 1
        self.var2 = 2

    def methodA[self]:
        self.var1 = self.var1 + self.var2
        return self.var1



class ClassB[ClassA]:
    def __init__[self, class_a]:
        self.var1 = class_a.var1
        self.var2 = class_a.var2

object1 = ClassA[]
sum = object1.methodA[]
object2 = ClassB[object1]
print sum
0 mà bạn đã tạo khi bạn viết
class ClassA[object]:
    def __init__[self]:
        self.var1 = 1
        self.var2 = 2

    def methodA[self]:
        self.var1 = self.var1 + self.var2
        return self.var1



class ClassB[ClassA]:
    def __init__[self, class_a]:
        self.var1 = class_a.var1
        self.var2 = class_a.var2

object1 = ClassA[]
sum = object1.methodA[]
object2 = ClassB[object1]
print sum
4]. Nếu bạn muốn có các thay đổi trong một lớp hiển thị trong một lớp khác, bạn có thể sử dụng các biến lớp:

class ClassA[object]:
   var1 = 1
   var2 = 2
   @classmethod
   def method[cls]:
       cls.var1 = cls.var1 + cls.var2
       return cls.var1

Trong kịch bản này,

class ClassA[object]:
    def __init__[self]:
        self.var1 = 1
        self.var2 = 2

    def methodA[self]:
        self.var1 = self.var1 + self.var2
        return self.var1



class ClassB[ClassA]:
    def __init__[self, class_a]:
        self.var1 = class_a.var1
        self.var2 = class_a.var2

object1 = ClassA[]
sum = object1.methodA[]
object2 = ClassB[object1]
print sum
1 sẽ nhận các giá trị trên
class ClassA[object]:
    def __init__[self]:
        self.var1 = 1
        self.var2 = 2

    def methodA[self]:
        self.var1 = self.var1 + self.var2
        return self.var1



class ClassB[ClassA]:
    def __init__[self, class_a]:
        self.var1 = class_a.var1
        self.var2 = class_a.var2

object1 = ClassA[]
sum = object1.methodA[]
object2 = ClassB[object1]
print sum
0 từ kế thừa. Sau đó, bạn có thể truy cập các biến lớp thông qua
class ClassA[object]:
    def __init__[self]:
        self.var1 = 1
        self.var2 = 2

    def methodA[self]:
        self.var1 = self.var1 + self.var2
        return self.var1



class ClassB[ClassA]:
    def __init__[self, class_a]:
        self.var1 = class_a.var1
        self.var2 = class_a.var2

object1 = ClassA[]
sum = object1.methodA[]
object2 = ClassB[object1]
print sum
7,
class ClassA[object]:
    def __init__[self]:
        self.var1 = 1
        self.var2 = 2

    def methodA[self]:
        self.var1 = self.var1 + self.var2
        return self.var1



class ClassB[ClassA]:
    def __init__[self, class_a]:
        self.var1 = class_a.var1
        self.var2 = class_a.var2

object1 = ClassA[]
sum = object1.methodA[]
object2 = ClassB[object1]
print sum
8 hoặc thậm chí từ một phiên bản
class ClassA[object]:
    def __init__[self]:
        self.var1 = 1
        self.var2 = 2

    def methodA[self]:
        self.var1 = self.var1 + self.var2
        return self.var1



class ClassB[ClassA]:
    def __init__[self, class_a]:
        self.var1 = class_a.var1
        self.var2 = class_a.var2

object1 = ClassA[]
sum = object1.methodA[]
object2 = ClassB[object1]
print sum
9 [với điều kiện là bạn chưa thêm một phương thức thể hiện var1 sẽ được giải quyết trước khi biến lớp trong Tra cứu thuộc tính.

Tôi phải biết thêm một chút về trường hợp sử dụng cụ thể của bạn trước khi tôi biết nếu đây là một quá trình hành động mà tôi thực sự muốn giới thiệu mặc dù ...

Đã trả lời ngày 15 tháng 11 năm 2013 lúc 5:00Nov 15, 2013 at 5:00

Mgilsonmgilsonmgilson

289K60 Huy hiệu vàng605 Huy hiệu bạc676 Huy hiệu Đồng60 gold badges605 silver badges676 bronze badges

1

var1 và var2 là một biến thể hiện của classa. Tạo một thể hiện của ClassB và khi gọi Phương thức, nó sẽ kiểm tra phương thức trong lớp con [lớpb] trước, nếu phương thức không có trong lớp, bạn cần gọi classa bằng cách sử dụng phương thức Super [] sẽ giúp bạn có tất cả các phương thức thực hiện trong Classa. Bây giờ, bạn có thể truy cập tất cả các phương thức và thuộc tính của ClassB.ClassA. Create an Instance of ClassB and when calling the methodA it will check the methodA in Child class [ClassB] first, If methodA is not present in ClassB you need to invoke the ClassA by using the super[] method which will get you all the methods implemented in ClassA. Now, you can access all the methods and attributes of ClassB.

class ClassA[object]:
    def __init__[self]:
        self.var1 = 1
        self.var2 = 2

    def methodA[self]:
        self.var1 = self.var1 + self.var2
        return self.var1


class ClassB[ClassA]:
    def __init__[self]:
        super[].__init__[]
        print["var1",self.var1]
        print["var2",self.var2]


object1 = ClassB[]
sum = object1.methodA[]
print[sum]

Đã trả lời ngày 29 tháng 8 năm 2020 lúc 14:44Aug 29, 2020 at 14:44

1

class ClassA[object]:
    def __init__[self]:
        self.var1 = 1
        self.var2 = 2
    def method[self]:
        self.var1 = self.var1 + self.var2
        return self.var1

class ClassB[ClassA]:
    def __init__[self]:
        ClassA.__init__[self]

object1 = ClassA[] 
sum = object1.method[]  
object2 = ClassB[] 
print sum

Đã trả lời ngày 15 tháng 11 năm 2013 lúc 5:57Nov 15, 2013 at 5:57

0

Chúng ta có thể truy cập/vượt qua các đối số/biến từ lớp này sang lớp khác bằng cách sử dụng tham chiếu đối tượng.

#Class1
class Test:
    def __init__[self]:
        self.a = 10
        self.b = 20
        self.add = 0

    def calc[self]:
        self.add = self.a+self.b

#Class 2
class Test2:
    def display[self]:
        print['adding of two numbers: ',self.add]
#creating object for Class1
obj = Test[]
#invoking calc method[]
obj.calc[]
#passing class1 object to class2
Test2.display[obj]

Đã trả lời ngày 19 tháng 1 năm 2020 lúc 5:07Jan 19, 2020 at 5:07

Chỉ cần tạo các biến trong một lớp. Và sau đó kế thừa từ lớp đó để truy cập các biến của nó. Nhưng trước khi truy cập chúng, lớp cha phải được gọi để bắt đầu các biến.

class a:
    def func1[self]:
        a.var1 = "Stack "

class b:
    def func2[self]:
        b.var2 = "Overflow"

class c[a,b]:
    def func3[self]:
        c.var3 = a.var1 + b.var2
        print[c.var3]

a[].func1[]
b[].func2[]
c[].func3[]

Đã trả lời ngày 30 tháng 11 năm 2020 lúc 8:40Nov 30, 2020 at 8:40

Làm thế nào để bạn sử dụng một biến từ một lớp trong một lớp khác?

Bạn có thể tạo đối tượng của một lớp và sử dụng đối tượng này mà bạn gọi là các biến và phương thức lớp khác, nhưng đảm bảo tính truy cập sẽ được công khai.Chúng ta có thể sử dụng giao diện lớp A và bằng cách triển khai A vào B, có thể sử dụng biến của lớp A thành B.create the object of one class and using this object you call other class variables and methods, but make sure the accessiblity will be as public. We can use interface class A and by implementing A into B, can use the variable of class A into B.

Làm thế nào để bạn truy cập một biến bên ngoài lớp trong Python?

Các biến được xác định bên ngoài lớp có thể được truy cập bởi bất kỳ lớp hoặc bất kỳ phương thức nào trong lớp bằng cách chỉ viết tên biến.

Làm thế nào để bạn truy cập một biến từ một phương thức khác trong Python?

Sử dụng cú pháp thuộc tính đối tượng để truy cập một biến bên ngoài hàm.Trong một chức năng có tên Func, sử dụng Func cú pháp.Biến = giá trị để lưu trữ giá trị trong biến như một thuộc tính của func.Để truy cập giá trị bên ngoài func, sử dụng func [] để chạy func, sau đó sử dụng chức năng cú pháp_name.. In a function named func , use the syntax func. variable = value to store value in variable as an attribute of func . To access value outside of func , use func[] to run func , then use the syntax function_name.

Bài Viết Liên Quan

Chủ Đề