Hướng dẫn how do you access a variable from another class in python? - làm thế nào để bạn truy cập một biến từ một lớp khác trong python?

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?

Hướng dẫn how do you access a variable from another class in python? - làm thế nào để bạn truy cập một biến từ một lớp khác trong python?

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

Hướng dẫn how do you access a variable from another class in python? - làm thế nào để bạn truy cập một biến từ một lớp khác trong python?

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

Hướng dẫn how do you access a variable from another class in python? - làm thế nào để bạn truy cập một biến từ một lớp khác trong python?

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)

Hướng dẫn how do you access a variable from another class in python? - làm thế nào để bạn truy cập một biến từ một lớp khác trong python?

Đã 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

Hướng dẫn how do you access a variable from another class in python? - làm thế nào để bạn truy cập một biến từ một lớp khác trong python?

Làm thế nào tôi có thể truy cập biến lớp từ một lớp khác?

Bạn có thể truy cập tất cả các biến bằng cách sử dụng đối tượng lớp con và bạn không phải tạo một đối tượng của lớp cha. Kịch bản này chỉ xảy ra khi lớp được mở rộng; Nếu không, cách duy nhất để truy cập nó là sử dụng lớp con.by using the subclass object, and you don't have to create an object of the parent class. This scenario only happens when the class is extended; otherwise, the only way to access it is by using the subclass.

Làm thế nào để bạn truy cập một biến bên ngoài một chức năng 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. to access a variable outside of a function. 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.

Chúng ta có thể truy cập biến thể hiện trong một lớp khác không?

Phương thức thể hiện có thể truy cập trực tiếp các biến lớp và phương thức lớp.Phương thức lớp có thể truy cập trực tiếp các biến lớp và phương thức lớp.Các phương thức lớp không thể truy cập các biến thể hiện hoặc phương thức thể hiện trực tiếp, họ phải sử dụng tham chiếu đối tượng.. Class methods can access class variables and class methods directly. Class methods cannot access instance variables or instance methods directly—they must use an object reference.

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

Tuy nhiên, bạn có thể truy cập các biến riêng tư và phương thức riêng tư từ bên ngoài lớp.Sử dụng cú pháp giống như cá thể _ class-name__private-actribution.Use the syntax like instance _class-name__private-attribute .