Python:如何在另一个对象中使用第一类对象构造函数值

Python:如何在另一个对象中使用第一类对象构造函数值,python,Python,现在我有两个对象 myu class1=MyClass(x) my_class2=MyClass() 我想在调用my_class2对象时使用x P>其他语言支持静态变量,如java、C++等。您可以改为使用类属性: class MyClass(Object): def __init__(self, x=None): if x: self.x = x def do_something(self): print self.x

现在我有两个对象

myu class1=MyClass(x)

my_class2=MyClass()

我想在调用my_class2对象时使用x


<> P>其他语言支持静态变量,如java、C++等。您可以改为使用类属性:

class MyClass(Object):

    def __init__(self, x=None):
        if x:
            self.x = x
    def do_something(self):
        print self.x

关于Python类。

将其作为属性分配给类:

>>类MyClass(对象):
定义初始化(self,x=None):
如果x不是无:
self.\uuuuu类\uuuuuu.x=x
def do_某事(自我):
打印self.x#或self.u_类_uuu.x,以避免获取实例属性
>>>my_class1=MyClass('aaa')
>>>my_class2=MyClass()
>>>我的班2.做点什么
aaa

Python中没有静态变量,但是可以使用类变量来实现。以下是一个例子:

class Klass:
   Attr = 'test'

# access it (readonly) through the class instances:
x = Klass()
y = Klass()
x.Attr
y.Attr
调用
self.x
时,它首先查找实例化为
self.x
的实例级变量,如果未找到,则查找
Class.x
。所以您可以在类级别定义它,但在实例级别重写它

一个广泛使用的示例是使用默认类变量,并可能覆盖到实例中:

class MyClass(object):
    x = 0

    def __init__(self, x=None):
        if x:
            MyClass.x = x

    def do_something(self):
        print "x:", self.x

c1 = MyClass()
c1.do_something()
>> x: 0

c2 = MyClass(10)
c2.do_something()
>> x: 10

c3 = MyClass()
c3.do_something()
>> x: 10

但我需要在运行时设置x的值。还有其他方法吗?@ChZeeshan:是的,你可以把它分配给类,而不是实例。
class MyClass(object):
    x = 0

    def __init__(self, x=None):
        self.x = x or MyClass.x

    def do_something(self):
        print "x:", self.x

c1 = MyClass()
c1.do_something()
>> x: 0

c2 = MyClass(10)
c2.do_something()
>> x: 10

c3 = MyClass()
c3.do_something()
>> x: 0