python:同一根目录下不同的py文件,为什么不用导入却可以访问并修改其他py文件中类的属性值?

同一根目录下不同的py文件,为什么不用导入却可以访问并修改其他py文件中类的属性值?

例如从入门到实践中的12.5章节game_function模块访问修改ship模块下的movin_right属性值:
game_function模块代码如下:

import sys
import pygame
from bullet import Bullet
#此处并未导入ship

def check_keydown_event(event,ai_settings,screen,ship,bullets):
    """相应按键事件"""
    if event.key == pygame.K_RIGHT:
        ship.moving_right = True
    elif event.key == pygame.K_LEFT:
        ship.moving_left = True
    elif event.key == pygame.K_UP:
        ship.moving_up = True
    elif event.key == pygame.K_DOWN:
        ship.moving_down = True
        #修改了ship中的属性值
    elif event.key == pygame.K_SPACE:
        fire_bullet(ai_settings,screen,ship,bullets)



def check_keyup_event(event,ship):
    """相应松开事件"""
    if event.key == pygame.K_RIGHT:
        ship.moving_right = False
    elif event.key == pygame.K_LEFT:
        ship.moving_left = False
    elif event.key == pygame.K_UP:
        ship.moving_up = False
    elif event.key == pygame.K_DOWN:
        ship.moving_down = False


def check_events(ai_settings,screen,ship,bullets):
    """响应按键和鼠标事件"""
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type == pygame.KEYDOWN:
            check_keydown_event(event,ai_settings,screen,ship,bullets)
        elif event.type == pygame.KEYUP:
            check_keyup_event(event,ship)


def update_screen(ai_settings,screen,ship,bullets):
    """更新屏幕的图像并切换到新屏幕"""
    #每次循环时都重新绘制屏幕
    screen.fill(ai_settings.bg_color)
    #在飞船和外星人后面重绘所有子弹
    for bullet in bullets.sprites():
        bullet.draw_bullet()

    ship.blitme()
    #让最近绘制的屏幕可见
    pygame.display.flip()

def update_bullets(bullets):
    """更新子弹位置,并删除已消失的子弹"""
    #更新子弹位置
    bullets.update()

    #删除已消失的子弹
    for bullet in bullets.copy():
        if bullet.rect.bottom <= 0:
            bullets.remove(bullet)


def fire_bullet(ai_settings,screen,ship,bullets):
    """如果子弹还没达到上限,就发射一个子弹"""
    if len(bullets) < ai_settings.bullets_allowed:
        new_bullet = Bullet(ai_settings, screen, ship)
        bullets.add(new_bullet)

ship模块代码如下:

import pygame

class Ship():

    def __init__(self,ai_settings,screen):
        """初始化飞船并初始化其位置"""
        self.screen = screen

        #加载飞船图像并获取其外接矩形
        self.image = pygame.image.load('images/ship.bmp')#加载图片
        self.rect = self.image.get_rect()#图片赋予给显示矩形
        self.screen_rect = screen.get_rect()#将显示矩形赋予给screen_rect
        self.ai_settings = ai_settings#引用settings

        #将每艘船放在屏幕底部中央
        self.rect.centerx = self.screen_rect.centerx #飞船的中心x坐标 设置为表示屏幕的矩形属性cenrerx
        self.rect.bottom = self.screen_rect.bottom #飞船的下边缘y坐标 设置为表示屏幕的矩形属性bottom
        #centerx-中心线,bottom-底部

        #在飞船的属性centen存储小数值
        self.center = float(self.rect.centerx)


        #移动标志
        self.moving_right = False
        self.moving_left = False
        self.moving_up = False
        self.moving_down = False

    def update(self):
        """根据标志移动飞船位置"""
        #更新飞船的centerx值而不是rect

        if self.moving_right and self.rect.right <  self.screen_rect.right:
            self.center += self.ai_settings.ship_speed_factor


        if self.moving_left and self.rect.left >  0:
            self.center -= self.ai_settings.ship_speed_factor


        if self.moving_up:
            self.rect.top -= self.ai_settings.ship_speed_factor
            if self.rect.top < 0:
                self.rect.top = self.screen_rect.top


        if self.moving_down:
            self.rect.bottom += self.ai_settings.ship_speed_factor
            if self.rect.bottom > 700:
                self.rect.bottom = self.screen_rect.bottom

        #根据self.centerx更新rect对象
        self.rect.centerx = self.center



    def blitme(self):
        """在指定位置绘制飞船"""
        self.screen.blit(self.image,self.rect)
0

1个回答

亲,文件一中的ship是一个函数参数,他的具体属性和调用是具体传入的参数相关
不是指的ship模块

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Pycharm下同一目录py文件不能相互调用?
1.首先确保所在目录是Python Package而不是一般的New Stratch File Python Package下有__init___.py或自己建空的__init___.py 2.pycharm不会将当前文件目录自动加入自己的sourse_path。右键make_directory as-->sources path将当前工作的文件夹加入source_path就可以了
python引用同一包中其他.py文件的类
python引用同一包中其他.py文件中的类   '×××' is not callable TypeError: 'module' object is not callable
python项目中不同文件夹py源文件之间如何相互调用--Python import中相对路径的问题
python项目中不同文件夹py源文件之间如何相互调用,下面将以实际例子给出解决方案:Python import中相对路径的问题
关于python同一个文件夹里面不同.py文件的交叉引用
关于python同一个文件夹里面不同.py文件的交叉引用
python引入同一目录下的py文件
注意:python2和python3的包内import语法有区别,下面介绍一下python3的包内import语法 python3 例如在admin.py文件中要引入dealcode.py文件: 1、在目录下有__init__.py文件 2、在admin.py文件中加一行:from . import dealcode (如果要引入同一目录下的dealcode.py文件中的一个类Hello...
import其他文件夹下.py文件显示无法引入问题
在需要导入的文件的文件夹中放入__init__.py文件就可以解决,这个文件里面可以什么都不写。 关于__init__.py 可以看到,几乎每个文件夹下都有__init__.py,一个目录如果包含了__init__.py 文件,那么它就变成了一个包(package)。__init__.py可以为空,也可以定义包的属性和方法,但其必须存在,其它程序才能从这个目录中导入相应的模块或函数。例如在da...
python下如何在目录下让Python文件去调用另一个Python文件内的函数或类
针对这个问题,网上有很多方法,但主要是python无法找到其他函数所在的.py文件。不同情况有不同的方法: 假设A.py文件需要调用B.py文件内的P(x,y)函数 情况一:假如在同一目录下,则需 import B if __name__ == "__mian__":        B.P(x,y) 情况二:如只需要调用单个函数 from B import P if
python py文件如何调用不同文件夹下的py文件
需要用到sys.path.append(path)命令。 示例:这是我的文件夹布局 aa.py: def sayHello(name): print 'hello '+name class classA(): def __init__(self,name): self.name = name def sayByeBye(self) : ...
Python 引用其他.py文件中的类和类的方法
Python 引用其他.py文件中的类和类的方法 #HelloWorld是文件名称,Hello是类 from HelloWorld import Hello 调用,Hello类的方法: >>> h = Hello() >>> h.hello() Hello, world    #输出结果 #>>> Hello().hello() #Hello, world 附
selenium python 自定义类调用,同一级目录和跨目录
1. *.py在同一目录下 testDirectory --class_login.py --message_log.py 1.1 login.py #coding:utf-8 #coding:cp936 class login(): def user_login(self,broswer,userName,userPwd): broswer.find_ele
Pycharm中无法import同一目录中明明已存在的.py文件
问题描述: 如图所示,在同一目录下明明存在相应的文件,但是导入时却出现红线,把鼠标放在红线的位置,提示No module named xxx,提示说不存在相应的模块,但是同一目录的这个模块确实是存在的。     解决办法: 将鼠标放在当前文件夹上,点击右键,找到Mark Directory as,再选择Sources Root点击。 问题完美解决:  ...
python不同文件夹下的py文件调用
如果所示,login负责登录模块,省份新增需要调用登录模块login文件夹下的login.py 运行报错如下: Traceback (most recent call last): File “E:\Program Files\JetBrains\PyCharm 5.0.3\helpers\pycharm\utrunner.py”, line 121, in modules =
Python 中调用不同文件夹下的py文件
目录结构, bjyzhyxh.py调用public/getNowTime.py 文件中的函数, 如图即可
Python引用其他py文件中的变量
最近自己初学Python,在编程是遇到一个问题就是,怎样在一个py文件中使用另一个py文件中变量,问题如下: demo1代码import requests r = requests.get(&quot;http://www.baidu.com&quot;) r.encoding = r.apparent_encoding demo = r.text demo 123456beauful1代码:from bs4 imp...
同一文件夹下.py调用另一个.py文件的函数
from 模块名 import 函数1,函数2,函数3 注意是:同一目录
PyCharm--工程下导入不同路径下模块报错问题
pycharm工程下导入不通目录下自己写的py脚本
Python3学习(七):引用(import)文件夹下的py文件的方法
Python的import包含文件功能就跟PHP的include类似,但更确切的说应该更像是PHP中的require,因为Python里的import只要目标不存在就报错程序无法往下执行。要包含目录里的文件,PHP中只需要给对路径就OK。Python中则不同,下面来看看这个例子。 目录结构: 一、a.py 要 import dir目录下的 b.py 文件。 a.py代码如下: # c...
python 如何在一个文件中调用另一个文件的类
  #filename xk class class AClass: def __init__(self,name): print name a=AClass(&quot;sadfaf&quot;)   开始尝试的是用   import xk a=AClass(&quot;sadfaf&quot;)   执行出错   原因 一直以为python和Java是一样的,类名要和...
pycharm 当中导入不同文件夹下的子模块
这个问题困扰了我很长时间,后来灵感突发解决了问题问题描述:data文件夹下有level1.py文件,common文件夹下有common_utils.py文件level1.py想要Import common_utils文件里面的getDataFromTxt()在知乎上找到了靠谱的答案:https://www.zhihu.com/question/52880389/answer/327757554将该...
使用IDLE在一个py文件中引用另一个py中的类或函数
问题描述: 在同一个文件夹下有两个.py文件,我想在alien_invasion.py中引用settings.py中的类 在IDLE中直接 import settings 引用会出错 解决办法: 使用 sys.path.append(r'D:\学习测试\Python学习\武装飞船') 切换到指定目录,再import即可 注意: 由于IDLE保存的文件是带有错
python中import文件夹下面py文件,报错
在需要导入的那个文件夹里面新建一个 __init__.py文件,哪怕这个文件是空的文件也可以.
Python引用(import)文件夹下的py文件的方法
http://www.cnitblog.com/seeyeah/archive/2009/03/15/55440.html Python包含子目录中的模块方法比较简单,关键是能够在sys.path里面找到通向模块文件的路径。 下面将具体介绍几种常用情况: (1)主程序与模块程序在同一目录下: 如下面程序结构: `-- src     |-- mod1.py     `-- t
使用pycharm管理django项目时,关于导入另一个包里面文件的问题解决
问题:发现导入另外一个应用里面的文件报错,如下: 解决:把项目根目录daylifresh标记为SourceRoot 结果如下:不再报错
python导入py文件报错
python有大量的内置模块,可以方便地导入。同样python也可以导入其它人写的py程序,以利用别人写好的类和函数。 1、在缺省状态下,导入一个已编写好的py文件用import 跟上py文件名,有时系统会出现SyntaxError: invalid syntax的错误: 2、这种情况一般是由于查找目录不包含,类似于linux下的执行路径概念,可以打印sys.path来确认, 如下
解决Python编程中PyCharm无法识别导入同目录下模块问题
欢迎关注微信公众号【计算机视觉联盟】 获取更多前沿AI、CV资讯   在Python编写时,需要用到导入已创建好的模块,但一般会出现下图红方块问题:并没有要导入的模块的问题,即模块无法被识别。  出现上述情况,是因为PyCharm设置的问题,通过网上查询,可以按照以下方法解决: 1、file—setting—Build,Execution,Deployment—console—Pyt...
Python在不同目录下导入模块的方法
python在不同层级目录import模块的方法 使用python进行程序编写时,经常会调用不同目录下的模块及函数。本篇博客针对常见的模块调用讲解导入模块的方法。1. 同级目录下的调用目录结构如下:– src |– mod1.py |– test1.py若在程序test1.py中导入模块mod1, 则直接使用*import mod1*或from mod1 import *;2.
在pycharm中解决同一目录下py文件不能import的问题
第一步,file---setting第二步 ,找到python console第三步 , 选择当前工程目录,勾选 PYTHONPATH 的两个复选框,点击ok 即可。问题解决
python 一个.py文件如何调用另一个.py文件中的类和函数
在同一个文件夹下 调用函数: A.py文件: def add(x,y): print('和为:%d'%(x+y)) B.py文件: import A A.add(1,2) 或 from A import add add(1,2) 调用类: A.py文件: class A: def __init__(self,xx,yy): self.x=
unittest框架,不能识别不同目录下面的.py文件解决方案
1.修改了htmltestrunner和单元测试框架的loader两个脚本源码(只能在我上传的资源那里下载)2.配合以下脚本:#coding=utf-8 import sys #reload(sys) #sys.setdefaultencoding('utf8') import time import unittest from HTMLTestRunner import HTMLTestRun...
python在一个py文件里面运行另一个py文件并传递参数
1.在一个py文件里运行里一个py文件使用os模块 #p2.py import os if __name__=="__main__": os.system("python p1.py") #运行p1文件 2.使用sys模板获取传递的参数 #p1.py import sys print(sys.argv) #通过sys.argv传递参数 import os ...
python文件中的__name__=='__main__'的使用及调用其他py文件中的函数方法
最近学习python的时候经常会看到好多py文件中都有if _name_ == ‘_main_‘: 这句话,所以就花点儿时间来研究一下,总结了一下使用方法及原则。平时我们使用python IDE编写py程序的时候 一般是很少用到if name == ‘main‘:这句话的,因为我们在运行py文件时,没有牵扯到其他目录下自定义的py文件,所以不用写这句话就可以无忧地执行当前py文件中的函数,但 想想
python项目内import其他内部package的模块的正确方法
本文主要介绍如何在一个Python项目中,优雅的实现项目内各个package的模块(module)之间的相互引用。 之所以写这篇文章,是因为网上流传的各种奇技淫巧简直五花八门(包括stackoverflow等知名社区),极易误导对python的import机制不熟悉的人。比如我就曾一度因为找不到优雅的import方式,而认为python是一门愚蠢的语言。所以,我把近一上午的学习结果总结出来,
python3 导入不同文件夹下文件
文件目录如下:假设子目录network文件下的net.py要导入data.py:from .data import data     data前面加个点就好
Pycharm中.py文件调用其他.py文件的函数
在同一个PycharmProject下,如图untitled4工程下spyder.py函数中有变量url和函数download():要在lxml.py中调用,只需加入import spyter语句,即可调用:
Pycharm调用同级目录下的py脚本bug
Pycharm调用同级目录下的py脚本bug
Pycharm中,python如何调用另一个文件的类或者函数
假设以下文件的情况: add_method_1.py为一个简单的add()函数 def add(x,y): return x+y test_1.py &amp; test_2.py 均为空文件夹 首先,将文件设置为root路径(重要步骤!!!) 第一种情况,同一个文件夹下调用py文件 from add1 import add_method_1 第二种情况:不同文件夹下调用py文...
pycharm中调用同级目录出现错误的解决方法
在pycharm中调用同级目录中py文件(在一个package中)时会出现错误,但是如果你强行运行,会正常运行,找了个方法,右键所在的package,Mark Directory as->Sources Root,即可解决错误,不知道为什么。。。
python 从另一个包导入文件
文件目录   _ |_utils_ | |_utils.py |_xk.py 想要从xk.py import utils.py里面的函数 需要在utils里面加入__init__.py使utils不仅仅是一个文件夹,而是一个模块 如果xk.py在另一个模块里,而不是在根目录下 需要在xk.py首部加上 import sys ...
python 如何导入同级.py文件
导入.py文件的所有方法 (python3导入同级包,包名及调用的方法下面会有条红线,不要怕,没关系,运行不会报错) from 包名 import *
模块和包(几个py文件的调用)
引入模块和包
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 py大数据基础 学习py 还是java

相似问题

1
python:同一根目录下不同的py文件,为什么不用导入却可以访问并修改其他py文件中类的属性值?
1
如何批量更换一批相同word文档中的同一关键词为其他不同词
0
求解:soup.p.parent可以找到p的父节点,但soup.find_parent(name="p")返回None,why?
0
为什么我的win32+opengl纹理贴图是图形是空白的
0
C#用iTextSharp将多个单张pdf文件合并成一个pdf文件时有内存,但是不显示?
1
请问各位大佬怎么在matlab中画出领海和专属经济区域的分界线?
3
Python代码阅读提问!!!!!!!
1
layer.confirm为什么执行不力
1
编程中遇到文件操作的一个问题
1
怎样在matlab工作空间中导入txt文件里的复数矩阵?
3
当不满足if条件的时候,为什么还会进入if中打印倒叙的console.log(n)?
0
关于如何将Python程序交叉编译至Arm运行的问题
0
使用kafka消息中间件,写了一个生产消息的java代码,为什么在虚拟机上的consumer接收不到消息
1
如何 修改或添加 图片属性里的 说明里的信息 by Python?
1
erwin提供了api,但没有说明Java如何调用erwin,可以能得到详细的帮助和解答,谢谢。
0
delphi中的udpclient如何接收来自udpserver发送的消息?
2
求助一个自己写程序中的关于TreeSet同时去重和按加入顺序存储的bug。
0
VB相关如何在EXCEL中读取选中图片/文本框的名字?
0
不明白为什么会报错,大神求教!!!
0
有个m3u8地址idm提示有版权保护,其他工具也不能下载,有没有一个大佬能给指条路,