Py学习  »  Python

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

Alex • 5 年前 • 1853 次点击  

我是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
 
1853 次点击  
文章 [ 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无法解决此问题,因此会引发属性错误。

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