相关疑难解决方法(0)

Python只调用__init __()方法一次

有没有办法只调用一次类的init()方法.或者,当我从类创建对象时,如何禁用init()的调用?

python init

2
推荐指数
1
解决办法
4496
查看次数

Python:原始的'对象'类被重新定义.如何获得'对象'课程?

我正在为Squish Automation Tool使用python语言.这个工具扩展了python与一些自定义对象和函数.这就是他们在手册中所说的:

Squish的Python特定扩展模块通过内部执行以下语句的等效内容自动加载:

Python
import test
import testData
import object
import objectMap
import squishinfo
from squish import *
Run Code Online (Sandbox Code Playgroud)

这意味着除非您正在开发自己的独立模块,否则无需自行导入它们.

通过这样做,他们object自动重新定义(对此),所以我尝试做新式类(如class NewClass(object):)会给我一个错误:

TypeError:调用元类库时出错.module.__init__() 最多需要2个参数(给出3个)

所以我想要object退缩.在阅读了关于元类的惊人文章之后,我正试图object使用以下代码:

class OrigObject:
    __metaclass__ = type

class NewClass(OrigObject):
    pass
Run Code Online (Sandbox Code Playgroud)

我的问题是:是否与继承原始object类相同?

更新:我只能使用Python 2.4(如果重要的话)

谢谢!

python metaclass python-datamodel

2
推荐指数
1
解决办法
1385
查看次数

类型是否在python中创建类'Object'

我正在阅读关于元类的这篇优秀文章什么是Python中的元类?.接受的答案显示了如何使用type以下签名创建类.

type(name of the class, 
      tuple of the parent class (for inheritance, can be empty), 
      dictionary containing attributes names and values)
Run Code Online (Sandbox Code Playgroud)

这让我想知道是谁创建了对象类.对象类也是由type类创建的吗?

python metaclass

2
推荐指数
1
解决办法
265
查看次数

Python:基于变量的名称实例

我对Python和编程很新.

我正在制作一个基于终端的游戏作为练习项目.游戏将是一系列的房间和怪物.我的计划是制作这些课程的怪物和房间实例.我在整个游戏中创建了其中的一些,其中许多是基于玩家行为而动态创建的.

在创建新的怪物和房间时,我现在很难事先知道他们的名字.像这样:

class Monster(object):
    pass

Monster1 = Monster(something)
Run Code Online (Sandbox Code Playgroud)

必须知道运行前的实例名称似乎是一个笨拙的解决方案.我认为让变量跟踪怪物数量会更容易,然后动态创建实例名称.因此创建的第一个怪物实例将自动成为Monster1,下一个将是Monster2等.

像这样的东西:

class Monster(object):
    pass

monster_id = 0

def createMonster(monster_id)
monster_instance = "Monster" + str(monster_id)
monster_id += 1   
# The following is where i'm stuck. Basically I want to have the instance name be equal to   the content of monster_instance
(monster_instance) = Monster()
Run Code Online (Sandbox Code Playgroud)

所以问题是:如何在不知道实例运行时的名称的情况下创建类的实例?

我也想知道我是否很难让这个工作,因为我做了一些愚蠢的事情,这是一个更聪明/更优雅的方式.在任何情况下都非常感谢所有帮助和意见.

python

2
推荐指数
2
解决办法
165
查看次数

Python中的'type'是什么?

>>> type(type)
<type 'type'>
Run Code Online (Sandbox Code Playgroud)

我希望类型type是一个函数,因为它用于返回参数的类型.这是否意味着类型可以接受参数?是type不寻常的/特别的?

python

2
推荐指数
1
解决办法
92
查看次数

如何根据构造函数参数初始化静态成员?

我需要有静态或外部列表,该列表将被A类的每个对象使用。列表的值只需要初始化一次,并且应该从构造函数参数中获取,例如:

def initialize(x, y):
    for i in range(0, x):
        static_to_return.append([])
        for j in range(0, y):
            static_to_return[i].append((i * x) + 1 + y)
    return static_to_return


class A:
    static_member = initialize(x, y)

    def __init__(self, x, y):
        self.x = x
        self.y = y
Run Code Online (Sandbox Code Playgroud)

如何使这项工作有效?也许最好将其移至static_member另一个模块?static_member或者可以在函数中写入吗__init__

python static

2
推荐指数
1
解决办法
1274
查看次数

Python-类可调用是什么意思?

我试图理解Python中的“可调用对象”是什么,以及类可调用的含义。我在玩以下代码:

class A(object):

    def __init__(self):
        pass

print("Is A callable? " + str(callable(A)))
a=A()
print("created a")
a()
Run Code Online (Sandbox Code Playgroud)

得到以下结果:

Is A callable? True
created a
Traceback (most recent call last):    
File "test2.py", line 11, in <module>
a()
TypeError: 'A' object is not callable  
Run Code Online (Sandbox Code Playgroud)

此外,

print(type(A.__call__()))
Run Code Online (Sandbox Code Playgroud)

给出:

<class '__main__.A'>
Run Code Online (Sandbox Code Playgroud)

这是否意味着A类具有__call__方法?为什么是class类?

A.__call__()每次使用A()实例化时都会被调用吗?

python callable

2
推荐指数
1
解决办法
2460
查看次数

python 3.x,“type”本身派生自“object”,而“object”派生自“type”

我目前正在学习 python OOP 模型并被告知

type本身源自object,并且object源自type

我知道这object是python 3.x中每个类的默认超类,并且typeclass用于创建类(即类对象)。objecttype一起(以某种方式)构成了 python OOP 的基础,但我仍然对上面的陈述感到困惑。

object有人可以详细解释 和之间的关系type以及它们在 python OOP 中扮演的角色吗?谢谢

python oop class python-3.x

2
推荐指数
1
解决办法
81
查看次数

获取具有元类的类的名称

假设我定义一个A带有元类的类,如下所示:

class Meta(type):
    pass

class A(metaclass=Meta):
    pass
Run Code Online (Sandbox Code Playgroud)

然后,当我尝试访问类的名称时,A我得到元类的名称:

A.__class__.__name__
#  'Meta'
Run Code Online (Sandbox Code Playgroud)

但是,它不应该给我A,我定义的类吗?

注意:我尝试使用A.__mro__[0].__name__,它确实给了我A,但我仍然很困惑为什么A.__class__给我元类名称。有人对此有解释吗?

python metaclass python-3.x

2
推荐指数
1
解决办法
2008
查看次数

Python中添加的方法

在Ruby中,可以为在对象上定义方法时创建回调:

module Chatty
  def self.method_added(method_name)
    puts "Adding #{method_name.inspect}"
  end
  def self.some_class_method() end
  def some_instance_method() end
end
# => Adding :some_instance_method
Run Code Online (Sandbox Code Playgroud)

Python有没有类似的回调?

python methods class python-3.x

1
推荐指数
1
解决办法
102
查看次数

标签 统计

python ×10

metaclass ×3

python-3.x ×3

class ×2

callable ×1

init ×1

methods ×1

oop ×1

python-datamodel ×1

static ×1