好想睡觉 2023-12-15 20:14 采纳率: 50%
浏览 5

Python没有对象属性错误


import turtle as tu
import random as ra
import time
tu.setup(1.0,1.0)
tu.bgcolor('black')
tu.title("雪花")
t=tu.pen()
t.ht()
colors=['white']
class Snow():
    def __int__(self):
        self.r=ra.uniform(2,4)
        self.x=ra.randint(-1000,1000)
        self.y=ra.randint(500,1000)
        self.speed=ra.randint(5,20)
        self.color=ra.choice(colors)
        self.outline=2
    # def snow(self):
    #      t.pensize(self.outline)
    #      t.penup()
    #      t.goto(self.x,self.y)
    #      t.pendown()
    #      t.color(self.color)
    #      t.begin_fill()
    #      t.fillcolor("white")
    #      t.circle(self.r)
    #      t.end_fill()
    def snow(self):
        x=self.r
        t.pensize(self.outline)
        t.penup()
        t.goto(self.x,self.y)
        t.pendown()
        t.color(self.color)
        for i in range(6):
               t.forward(x*5)
               t.backward(x*2)
               t.left(60)
               t.forward(x*2)
               t.backward(x*2)
               t.right(120)
               t.forward(x*2)
               t.backward(x * 2)
               t.left(60)
               t.backward(x*3)
               t.right(60)
    def move(self):
        if self.y>=-500:
               self.y-=self.speed
        else:
               self.r=ra.uniform(2,4)
               self.x=ra.randint(-1000,1000)
               self.y=500
               self.speed=ra.randint(5,20)
               self.color=ra.choice(colors)
               self.outline=2
Snow    =   []
for i in range(595):
    Snow.append(Snow())
t.penup()
t.goto(0,0)
t.pendown()
t.pencolor("white")
t.write("张万森",align="center",font=("Comic Sans MS",66,"bold"))
time.sleep(1)
t.clear()
time.sleep(1)
t.write("下雪了",align="center",font=("Comic Sans MS",66,"bold"))
time.sleep(1)
t.clear()
time.sleep(1)
while True:
    tu.tracer(0)
    t.clear()
    t.penup()
    t.goto(0,0)
    t.pendown()
    t.write("我好想你",align="center",font=("Comic Sans MS",66,"bold"))
    for i in range(199):
        Snows[i].move()
        Snows[i].snow()
    tu.update()

img

  • 写回答

1条回答 默认 最新

  • 七待 The 2023-12-16 09:09
    关注

    变量被错误地赋值或使用
    还有 Python 类的构造函数是__init__ ,而不是 __int__。
    你创建了一个名为 Snow 的类,但在创建实例时也使用了 Snow 作为变量名。这会导致类名被覆盖。建议将实例列表命名为其他不同于类名的名称

    import turtle as tu
    import random as ra
    import time
    
    tu.setup(1.0, 1.0)
    tu.bgcolor('black')
    tu.title("雪花")
    
    colors = ['white']
    
    class Snow:
        def __init__(self):
            self.r = ra.uniform(2, 4)
            self.x = ra.randint(-1000, 1000)
            self.y = ra.randint(500, 1000)
            self.speed = ra.randint(5, 20)
            self.color = ra.choice(colors)
            self.outline = 2
    
        def snow(self):
            x = self.r
            tu.pensize(self.outline)
            tu.penup()
            tu.goto(self.x, self.y)
            tu.pendown()
            tu.color(self.color)
            for i in range(6):
                tu.forward(x*5)
                tu.backward(x*2)
                tu.left(60)
                tu.forward(x*2)
                tu.backward(x*2)
                tu.right(120)
                tu.forward(x*2)
                tu.backward(x * 2)
                tu.left(60)
                tu.backward(x*3)
                tu.right(60)
    
        def move(self):
            self.y -= self.speed
            if self.y < -500:
                self.r = ra.uniform(2, 4)
                self.x = ra.randint(-1000, 1000)
                self.y = 500
                self.speed = ra.randint(5, 20)
                self.color = ra.choice(colors)
                self.outline = 2
    
    snows = [Snow() for _ in range(595)]
    
    tu.penup()
    tu.goto(0, 0)
    tu.pendown()
    tu.pencolor("white")
    
    messages = ["张万森", "下雪了", "我好想你"]
    for message in messages:
        tu.write(message, align="center", font=("Comic Sans MS", 66, "bold"))
        time.sleep(1)
        tu.clear()
    
    while True:
        tu.tracer(0)
        tu.clear()
        tu.penup()
        tu.goto(0, 0)
        tu.pendown()
        tu.write("我好想你", align="center", font=("Comic Sans MS", 66, "bold"))
        for snow in snows:
            snow.move()
            snow.snow()
        tu.update()
    
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 12月15日