标签: instance

如何在 JavaScript 中获取实例名称?

如果我创建一个这样的类:

function MyClass(input){
  // construct something;
  var myInstanceName = ???
}
Run Code Online (Sandbox Code Playgroud)

创建实例时我需要实例的名称......

var MyInstance = new MyClass("做点什么");

需要知道 myInstanceName(在本例中为“MyInstance”),因为有一个创建按钮的方法,并且“onclick”必须调用该实例的方法。

我尝试了“this.name”,但它返回未定义...我如何获取这个值?

编辑:这是一个经过测试的工作示例:

function MyClass(WhereGoesTheButton){
    this.myName = "Test"; // <-- here is the issue
    this.idButton = WhereGoesTheButton;
    //
}
MyClass.prototype.createButton = function(){
    document.getElementById(this.idButton).innerHTML = '<button id="myId" onclick="'+this.myName+'.callBack(this);">Press Here</button>';
}
MyClass.prototype.callBack = function(who){
    alert("Button "+who.id+" has been pressed!");
}
var Test = new MyClass("testArea");
//
function ini(){
    Test.createButton();
}
Run Code Online (Sandbox Code Playgroud)

只需将其放在带有 body onload ini() 和一些 div 的页面中即可创建按钮。

它有效,但欢迎有更好实践的替代方案!

编辑2:这将完成这项工作,尽管我们仍然没有实例的名称:

var MyClassId = 0;
function …
Run Code Online (Sandbox Code Playgroud)

javascript class instance

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

JavaScript 中字符串的子类化

我有一个字符串方法String.prototype.splitName(),可以将作者的姓名(字符串)拆分为名字和姓氏。该语句 返回一个带有and (具有字符串值的属性)的var name = authorName.splitname();对象文字。namename.first = "..."name.last = "..."name

最近有人告诉我,将其作为公共splitName()String() 类的方法是不明智的,但我应该创建String 的私有子类并使用我的函数扩展该子类(而不是公共类)。我的问题是:如何对字符串执行子类化,以便在分配给新子类后仍然是有效的语句?我将如何分配给 String 的新私有子类?authorNamename = authorName.splitname();authorName

javascript string methods instance

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

Javascript 中类变量的等价物是什么?

编辑:感谢@Aadit M Shah 的确认。

function Apple () {}
Apple.someVar = null; // Class variable
Apple.prototype.someVar = null; // Instance variable
Run Code Online (Sandbox Code Playgroud)

javascript class instance-variables instance class-variables

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

金属实例渲染 – 几个问题

我目前正在研究 Apple 的 Metal API,但我无法理解如何实现渲染大量实例,因为每个实例都需要有自己的(部分)缓冲区。

假设我想绘制大约 50,000 个模型实例(我承认这相当荒谬)。每个实例都将其定位和骨骼动画数据存储在缓冲区中,假设每个实例 50 个关节。现在考虑到最多可以同时渲染三个帧,我需要这些实例缓冲区乘以帧数。

这将导致相当可笑的缓冲区大小,仅用于绘制实例。另外,如果当前实例无法容纳所有要渲染的对象的数据,应该如何实现不同数量的实例,分配更大的缓冲区?只需决定每帧的最大实例数?

我研究过的所有文章和教程似乎都表明:场景中存在最大数量的对象。

buffer instance metal

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

类属性和具有默认值的实例变量之间的区别

  1. 类变量和具有默认值的实例变量之间有什么区别吗?

(特别是就它们在“正常使用”下的行为而言,在内部我认为它们很可能以不同的方式实现)

  1. 在什么情况下我应该使用哪个版本?

以这两个类为例:

class A:
    d = 4

class A:
    def __init__(self, d=4):
        self.d = d
Run Code Online (Sandbox Code Playgroud)

无论您选择哪个版本,当您运行以下代码时,您都会得到相同的结果:

a2 = A()

a = A()
print(a.d)   # 4
a.d = 2
print(a.d)   # 2

print(a2.d)  # 4
Run Code Online (Sandbox Code Playgroud)

读完后我想到了这个问题:

  1. 类属性行为

python attributes object instance python-3.x

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

Python 类 - 使用实例作为属性

在撰写本文时,我目前正在学习/使用 Python 3.10.2 中的课程。我想要实现的是创建一个类实例,它是另一个类中的属性。

这是我一直在编写的一些代码,以帮助证明我的观点。

class Vehicle():
    """To model a basic vehicle"""
    def __init__(self, name, max_speed, millage):
        """Initiate class variables"""
        self.name = name
        self.max_speed = max_speed
        self.millage = millage
        self.tyre = Tyre()

    def vehicle_details(self):
        """display vehicle details"""
        return f"\nName: {self.name.title()}, Max speed: {self.max_speed}MPH, Millage: {self.millage} "

class Tyre():
    """A class specific for vehicle tyres"""
    def __init__(self, size=16, pressure=36):
        self.size = size
        self.pressure = pressure

    def tyre_details(self):
        """Print tyre details."""
        print(f'Tyre size: {self.size} inches.')
        print(f"Tyre pressure {self.pressure} PSI.")
Run Code Online (Sandbox Code Playgroud)

在Vehicle课堂上,我添加了 …

python oop attributes class instance

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

将实例作为函数参数传递

我写了一个很好的小应用程序,获取雅虎天气信息并将其发布到Twitter.它完美无瑕地工作,现在我想将代码重新排列成不同命名的文件,因此它更有意义.那是我遇到一些问题的时候.

以前,我有一个Class在libtweather.py.这是我的account.它允许我这样做,accountName.parseFeed()并且我将获得解析的Yahoo天气作为输出.(__ini__以天气URL,推特用户名和密码为args)

这是从创建的情况下我的主要脚本访问Class:这样
exec '%s = lw.twitterWeather("%s", "%s", "%s")' % (item[0], item[1], item[2], item[3]) 它不停地在其中作为参数传递给其他函数传递一个列表中的所有帐户名称的列表.

另一个功能getWeather是做天气:

def getWeather(accountList): #account names passed as a list of strings
    for item in accountList:
        print item, ': ',
        item = eval(item)       
        print item.parseFeed(), '\n
Run Code Online (Sandbox Code Playgroud)

我现在决定将该getWeather函数移动到与该文件相同的文件,Class但该行item = eval(item)给我带来了问题,因为该文件中没有创建实例.所有这些都在主脚本中.

现在我的问题是:有什么方法可以将这些实例作为函数的参数给出?或者我必须把功能放入Class?即使我这样做了,我仍然需要为item.parseFeed()列表中的多个项目执行操作,所以我仍然需要item = eval(item),不是吗?

提前致谢.我的应用程序有点在这里完整发布,但如果需要更好地了解我会发布更多代码.

更新:libtweather.py当我导入实例时,我最终运行我创建实例,以便其中的函数可以访问它们(添加了脚本底部的实例生成代码).我确信有更好的方法,但它目前适用于我,我很好.

python oop function instance

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

在AngelScript中注册一个C++类并传递一个类实例

我无法按照正确的方式遵循AngelScript手册来注册类对象并将类的特定实例传递给脚本.假设我有一个C++类Circle,我想让他知道AngelScript.

class Circle
{
public:
    int getArea();

    int radius;
};
Run Code Online (Sandbox Code Playgroud)

从这里开始,我想创建一个Circle类的实例,将getArea()方法注册到AngelScript引擎(或者如果可能的话,自动注册类中的所有方法),并将类实例本身传递给AngelScript环境.

Circle circleInstance;
circleInstance.radius = 10;

// Initialize AngelScript engine

asIScriptEngine *engine = asCreateScriptEngine(ANGELSCRIPT_VERSION);

engine->RegisterObjectMethod("Circle", "int getArea()",
    asMETHOD(Circle, getArea), asCALL_THISCALL);
Run Code Online (Sandbox Code Playgroud)

在AngelScript中,我希望能够从实例变量中调用该方法并返回C++函数的结果.

circleInstance.getArea();
Run Code Online (Sandbox Code Playgroud)

但是,在上面的代码中,我显然没有circleInstance以任何方式将实例传递给AngelScript引擎,因此脚本环境不知道它的存在.我假设我忽略了一些东西,答案只有一两行C++.如果我注册Circle过等的方法类RegisterObjectType或者RegisterInterface,我需要让Circle继承asIScriptObject这个工作?任何见解都表示赞赏!

c++ scripting class instance

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

Haskell:数据类型

我声明我的数据是这样的:

data Op = Plus | Minus | Mul | Div | Pow
        deriving (Eq, Show)

type Name = String

data Variable a = Variable Name (Expression a)
            deriving (Eq, Show)

data Declaration a = Declaration (Variable a)
            deriving (Eq, Show)  

{- The core symbolic manipulation type -}
data Expression a = 
          Number a           -- Simple number, such as 5
        | Expression Op (Expression a) (Expression a)
          deriving (Eq, Show)
Run Code Online (Sandbox Code Playgroud)

在GHCi中,我想通过键入来创建一个声明实例: Declaration Variable "var1" 2+3 但它不起作用,我想这只是一个错误的语法,但我无法弄清楚如何.

另外我想知道什么时候需要使用实例?这是我从书中得到的代码:

instance Num a …
Run Code Online (Sandbox Code Playgroud)

haskell types instance ghci

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

如何在ViewPager中获取当前可见片段的实例:

我正在构建一个显示不同片段的应用程序ViewPager.我将这些片段添加到ViewPager这样的:

 public void intialiseViewPager() 
 {
    List<Fragment> fragments = new Vector<Fragment>();
    numberOfTabs = application.currentReport.getODTabsList().size();
    for (int i = 0; i < numberOfTabs; i++)      
    {
        ODTab tempTab = application.currentReport.getODTabsList().get(i);
        if (tempTab.getTabType().equals(ODGrid.XML_GRID_ELEMENT))
        {
            GridFragment gridFragment = GridFragment.newInstance(tempTab.getTabId());
            fragments.add(gridFragment);
        }
        else  if (tempTab.getTabType().equals(ODChart.XML_CHART_ELEMENT))
        {
            NewChartFragment chartFragment = NewChartFragment.newInstance(tempTab.getTabId());
            fragments.add(chartFragment);
        }
    }
    Log.d(TAG, "Current report fragments set to adapter: "+fragments.toString());
    mPagerAdapter  = new ViewPagerAdapter(getSupportFragmentManager(), fragments);
    mViewPager = (ViewPager)findViewById(R.id.pager);
    mViewPager.setAdapter(mPagerAdapter);
    mViewPager.setOffscreenPageLimit(0);
    mViewPager.setOnPageChangeListener(this);
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我tempTab.getTabId()在此行中传递了一个String()片段:

GridFragment gridFragment = GridFragment.newInstance(tempTab.getTabId());
Run Code Online (Sandbox Code Playgroud)

在片段本身我这样做来初始化它:

public …
Run Code Online (Sandbox Code Playgroud)

android instance android-fragments android-viewpager

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