0

次のコードで、クラスtest1のemail_attachmentsリストを「attach1」に設定すると、クラスtest2のemail_attachmentsリストも「attach1」に設定されるのはなぜですか。

クラス:

class classtest:
    smtp_server = ""
    smtp_port = 0
    email_attachments = []

    def class_print(self):

        print self.smtp_server
        print self.smtp_port
        print self.email_attachments

脚本:

import ClassTest

def main():
    test1 = ClassTest.classtest()
    test1.smtp_server = "server1"
    test1.smtp_port = "1"
    test1.email_attachments.append("attach1")
    test1.class_print()

    print

    test2 = ClassTest.classtest()
    test2.smtp_server = "server2"
    test2.class_print()

main()

結果:

server1

1

['attach1']

server2

0

['attach1']

4

1 に答える 1

3

クラスの先頭で定義した 3 つの変数は、クラスの特定のインスタンスではなく、クラス自体に関連付けられているため、それらの値は test1 と test2 の間で共有されます。

タイプのオブジェクトごとに個別の値を持つことを意図している場合はclasstest、コンストラクターを定義し、各変数で 'self' プレフィックスを使用する必要があります。

def __init__(self):
    self.smtp_server = ""
    self.smtp_port = 0
    self.email_attachments = []
于 2013-03-11T15:02:36.370 に答える