社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

如何在python中实例化类的实例?

Alex • 5 年前 • 1900 次点击  

我是python新手,在uni做一些练习,

我熟悉java,所以我试图在python中创建一个类,然后创建该类的一个实例,将其用作同一目录中另一个文件中的对象。

所以我试着这么做:

在main.py内-

import player
p1 = player.Player(300, 300, 64, 64)

这是player.py中的player类

import main
class Player:
    def __init__(self, x, y, width, height):
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.vel = 15
        self.left = False
        self.right = False
        self.walkCount = 0

这将导致:

属性错误:模块“player”没有属性“player”

经过一些研究,我也尝试过:

from player import Player
p1 = Player(300, 300, 64, 64)

这将导致:importTerror:无法从“player”导入名称“player”(C:\ users\alex\pycharmprojects\bunkergame\player.py)

很简单,并且忽略了一些其他代码,这将在player.py中创建一个player类的实例,该实例将在main.py文件中使用

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/47935
 
1900 次点击  
文章 [ 5 ]  |  最新文章 5 年前
Barb
Reply   •   1 楼
Barb    5 年前

你需要移除 player. 通过使用 . 这是第一个错误的原因,第二个是您在播放器页面上导入main,在主页上导入player。把它扔掉 import main 在你的玩家页面上。

第一个错误:

import player

p1 = player.Player(300, 300, 64, 64)

这应该是:

import player

p1 = Player(300, 300, 64, 64)

下面是一个发生了什么的例子:

class Player:
    def __init__(self, name, age):
        self.name = name
        self.age = age

player = Player # setting the class to variable

player.name = 'Johnny' # .name is the attribute of the Player class
print(player.name)

输出:

'Johnny'

你做到了:

player.Player.name = 'Johnny'
print(player.name)

返回您的错误:

Traceback (most recent call last):  File "main.py", 
line 8, in <module>          
player.Player.name = 'Johnny'AttributeError: type object 'Player' has no attribute 'Player'
Esteban Vergara
Reply   •   2 楼
Esteban Vergara    5 年前

你应该这样写导入:

import Player

p1 = Player(300, 300, 64, 64)

你也可以写一些类似的东西:

import Player as p

p1 = p(300, 300, 64, 64)
Alex
Reply   •   3 楼
Alex    5 年前

正如@daniel roseman所指出的,我在player.py中有一个“import main”,python显然不喜欢这个,删除这个和任何相关的代码就解决了这个问题!

Felipe Faria
Reply   •   4 楼
Felipe Faria    5 年前

根据您提到的错误,很可能已经安装了一个名为 player ,python正在导入哪个,而不是本地文件 player.py 是的。尝试重命名文件 玩家.py 去别的地方,或者去控制台做 pip uninstall player 是的。

注意错误是怎么说的 cannot import name 'Player' from 'player' ,这意味着python正在访问一个名为 运动员 ,但无法访问类 Player 是的。

Daniel Roseman
Reply   •   5 楼
Daniel Roseman    5 年前

如您在注释中所述,您将main导入player-这意味着您有一个循环导入:python无法解决此问题,因此会引发属性错误。

你不应该这么做。基本上不应该有玩家需要的东西。如果有的话,把它移到播放器本身或第三个模块。