我希望能够通过在已实例化的对象上调用方法来创建对象的新实例。例如,我有一个对象:
organism = Organism()
我希望能够调用organism.reproduce()
并拥有两个有机体类型的对象。此时我的方法如下所示:
class Organism(object):
def reproduce():
organism = Organism()
并且我非常确定它不起作用(我甚至不确定如何测试它。我在本文中尝试了gc方法)。那么,如何使我的对象创建自己的副本,就像我创建的第一个对象(带有organism = Organism()
)一样,该副本是可访问的?
class Organism(object):
def reproduce(self):
#use self here to customize the new organism ...
return Organism()
另一个选项-如果self
方法中未使用实例():
class Organism(object):
@classmethod
def reproduce(cls):
return cls()
这样可以确保生物产生更多的生物,以及(源自生物的假想的博格产生更多的博格)。
无需使用的另一个好处self
是,除了可以从实例调用之外,现在还可以直接从类中调用它:
new_organism0 = Organism.reproduce() # Creates a new organism
new_organism1 = new_organism0.reproduce() # Also creates a new organism
最后,如果在方法中同时使用了实例(self
)和类(Organism
或从子类调用的子类):
class Organism(object):
def reproduce(self):
#use self here to customize the new organism ...
return self.__class__() # same as cls = type(self); return cls()
在每种情况下,您都可以将其用作:
organism = Organism()
new_organism = organism.reproduce()
问题内容: 我有点困惑。问题是标题,这就是为什么我要问。我在单个VM上运行了JSF + JPA Web应用程序。JPA类具有字段。现在想象一下某个网络用户打开了一个页面并执行以下代码 当另一个Web用户/线程尝试读取该瞬态值时,我期望什么输出: 换句话说,就JVM而言,方法是否总是返回新的类实例或相同或“取决于”的实例?我一直在通过JSR-220寻找答案,但没有成功,任何帮助或文档参考都将不胜感激
问题内容: 在Python中,我希望能够创建一个既充当类函数又充当实例方法的函数,但是具有更改行为的能力。用例是针对一组可序列化的对象和类型。举个例子: 我知道给定Python源中funcobject.c中classmethod()的定义,这看起来像使用C模块一样简单。有没有办法从python内部执行此操作? 谢谢! 有了描述符的提示,我可以使用以下代码来做到这一点: 谢谢亚历克斯! 问题答案:
问题内容: 我正在创建一个类及其子类,需要在其中调用父级的静态方法以返回子级实例。 问题答案: 该静态方法被调用,其值是类对象,子类,你把它称为后的构造。因此,您可以使用实例化它:
本文向大家介绍php创建类并调用的实例方法,包括了php创建类并调用的实例方法的使用技巧和注意事项,需要的朋友参考一下 PHP类定义 PHP 定义类通常语法格式如下: 解析如下: 类使用 class 关键字后加上类名定义。 类名后的一对大括号({})内可以定义变量和方法。 类的变量使用 var 来声明, 变量也可以初始化值。 函数定义类似 PHP 函数的定义,但函数只能通过该类及其实例化的对象访问
问题 你想创建一个新的拥有一些额外功能的实例属性类型,比如类型检查。 解决方案 如果你想创建一个全新的实例属性,可以通过一个描述器类的形式来定义它的功能。下面是一个例子: # Descriptor attribute for an integer type-checked attribute class Integer: def __init__(self, name):