标签: dynamic-typing

Python编程 - 在Python中开发企业级软件的规则/建议?

我是一个有点高级的C++/Java开发人员,最近对Python感兴趣,我非常喜欢它的动态类型和高效的编码风格.我目前在我的小编程需求上使用它,比如解决编程问题和编写脚本,但我很好奇是否有人在企业级项目中成功使用了Python?(最好使用现代编程概念,如OOP和某种类型的设计模式)

如果是这样,你能解释为什么你选择Python (特别是)并给我们从这个项目中学到的一些经验教训吗?(随意比较项目中的Python与Java等的使用)

python java design-patterns programming-languages dynamic-typing

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

将动态转换为对象

这是我的代码:

MyClass here = new MyClass();
IEnumerable<MyClass> vats = (IEnumerable<MyClass>)here.All();
Run Code Online (Sandbox Code Playgroud)

All()方法返回IEnumerable <dynamic>.我想将其转换为IEnumerable <MyClass>.上面的行没有工作,它说无法将'd__15'类型的对象强制转换为'System.Collections.Generic.IEnumerable`1 [MyClass]'.

我也尝试过:

 IEnumerable<MyClass> vats = here.All() as IEnumerable<MyClass>;
Run Code Online (Sandbox Code Playgroud)

但它返回null.

c# dynamic-typing dynamictype

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

在目标c中从id到class的动态类型转换

我想在Objective C中动态转换并访问实例属性.这里有一个伪代码:

id obj;
if (condition1)
    obj = (Class1*)[_fetchedResults objectAtIndex:indexPath.row];
else
    obj = (Class2*)[_fetchedResults objectAtIndex:indexPath.row];

NSNumber *latitude = obj.latitude;
Run Code Online (Sandbox Code Playgroud)

然后编译器告诉我以下内容: 在'__strong id'类型的对象上找不到属性'latitude'

Class1和Class2都是核心数据实体,并且具有几乎相同类型的属性.在condition1中_fetchedResults返回Class1类型的对象,在condition2中_fetchedResults返回Class2类型的对象.

有人能给我一个如何解决这类问题的提示吗?

谢谢!

objective-c dynamic-typing

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

是否有一种梦想语言融合了动态和强类型的好处?

我有兴趣学习一种语言,它在内部处理对象作为哈希表(如JavaScript),但可以用强类型包装它们,以便在设计时提供代码完成/智能感知的好处.以下是我希望这种梦想语言能够发挥作用的方式:

public class Lion
{
  public void Roar() { Console.WriteLine("Aaarrgghh");}
} 

public static Main(string[] args)
{
  object myCat = new object(); // just plain object, no type!
  // adding a Roar() method to the myCat instance 
  myCat.Roar += delegate() {Console.WriteLine("Miauew");}
  // At this point myCat should qualify to be a Lion.
  // So we should be able to successfully duck-type-cast 
  // her to a lion
  Lion myLion = myCat as Lion;
  // now the myLion reference is strongly typed, 
  // …
Run Code Online (Sandbox Code Playgroud)

duck-typing strong-typing dynamic-typing c#-4.0

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

针对严格的打字系统,是否有针对"越来越多的反叛"的引用?

Go语言常见问题解答明确提出了这一主张:

对于像Java和C++这样繁琐的类型系统,人们越来越反叛,将人们推向动态类型的语言,如Python和JavaScript.

是否有(非轶事)数据实际支持此类索赔?我总是发现动态打字邋and和厌倦,但如果我失去了接触,我至少需要一些警告.

static-typing dynamic-typing

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

您是否知道动态类型语言中优雅解决方案的任何示例?

想象一下两种语言(除了类型信息)确实具有完全相同的语法,但是一种是静态类型而另一种是动态类型.然后,对于用静态类型语言编写的每个程序,可以通过删除所有类型信息来导出等效的动态类型程序.因为反过来不是必然的,所以动态类型程序的类别严格地大于静态类型程序的类.让我们称这个动态类型的程序,没有变量映射到类型使它们静态类型 "真正的动态类型程序".

由于两个语言系列都是完美的,我们可以确定,对于每个这样的真正动态类型的程序,存在一个静态类型的程序完全相同的东西,但我经常读到"有经验的程序员能够编写非常优雅的代码动态类型语言".因此,我问自己:真的动态类型程序是否有任何好的例子,对于这些程序,任何等效的静态类型程序显然更复杂/更不那么"优雅"(无论这意味着什么)?

你知道这样的例子吗?

static-typing dynamic-typing

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

如何处理类中的多态性

在具有动态类型的语言中,使用多态可能会触发超类上的错误.

我将尝试用一个简单的例子解释我的问题:假设一个动态类型的语言(如ECMAScript)和以下类结构:

图

class A{
    private idA;
    public A(){
        idA=0;
    }
    public foo(){
        update();
        if (this.idA!=3) Throws new Exception(" What is happening? ");
    }
    private update(){
        this.idA = 3;
    }
}
class B extends A{
    private idB;
    public B(){
        super();
        idB=0;
    }
    public foo(){
        super.foo();
        // Any operation between A::update and B::update()
        if (this.idB!=0) Throws new Exception("hmmm, that could not happend!");
        update();
    }
    private update(){
        this.idB = 5;
    }
}
Run Code Online (Sandbox Code Playgroud)

在这个非常简单的例子中,当我创建类B的对象时,B :: foo()调用父A :: foo(),它调用"update".该对象是B的实例,因此调用的"更新"函数是B :: update,之后,在B :: foo中,再次调用更新函数(B :: update).最终的结果是永远不会调用A …

polymorphism class dynamic-typing

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

Python解释器如何在动态类型中工作?

我读了这个问题,但它没有给我一个明确的答案: Python解释器如何寻找类型?

python解释器如何知道变量的类型?我不知道如何获得类型.我在这里看看幕后发生了什么.在下面的示例中,它如何将类int或string与我的变量相关联.

它是如何知道这是一个int:

>>> i = 123
>>> type(i) 
<class 'int'>
Run Code Online (Sandbox Code Playgroud)

或那个字符串:

>>> i = "123"
>>> type(i)
<class 'str'>
Run Code Online (Sandbox Code Playgroud)

python dynamic-typing python-internals

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

动态类型语言如何工作?

我今天了解到动态类型编程语言在运行时进行类型检查,而不是在编译时进行类型检查。(如果我错了,请纠正我)。我想知道的是,动态类型语言在运行时如何找出类型以及它是如何工作的?动态类型语言也称为值类型语言,在动态类型语言的情况下,类型与值相关是什么意思?

由于我是初学者,我的问题对你们中的一些人来说不是一个好问题,请尝试从我的角度思考,我刚刚开始,我在任何地方都找不到这个答案。

更新

来自维基百科页面类型系统

动态类型检查语言的实现通常将每个运行时对象与包含其类型信息的“类型标记”(即对类型的引用)相关联。此运行时类型信息 (RTTI) 还可用于实现动态调度、后期绑定、向下转换、反射和类似功能。

现在什么是类型标签以及它是如何工作的,我的意思是如果你能告诉我它在内存中是如何表示的?

types type-systems programming-languages static-typing dynamic-typing

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

如何在Java中创建动态变量?

例如,在Haxe中,我可以创建严格类型的变量:var a:Float = 1.1;或者var b:String = "hello"如果需要还可以创建动态变量 :

var d:Dynamic = true; d = 22; d = "hi";

如何在Java中创建这种变量?

java strong-typing dynamic-typing

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