Questions tagged «class»

用于创建新对象的模板,该模板描述了公共状态和行为。不要与CSS类混为一谈。请改用[css]。

6
猴子在Python的另一个模块中修补类
我正在使用其他人编写的模块。我想猴子修补__init__模块中定义的类的方法。我发现的示例显示了如何执行此操作的所有示例,都假设我自己将自己称为该类(例如Monkey-patch Python类)。然而,这种情况并非如此。在我的情况下,该类是在另一个模块的函数中初始化的。请参阅下面的(大大简化的)示例: thirdpartymodule_a.py class SomeClass(object): def __init__(self): self.a = 42 def show(self): print self.a thirdpartymodule_b.py import thirdpartymodule_a def dosomething(): sc = thirdpartymodule_a.SomeClass() sc.show() mymodule.py import thirdpartymodule_b thirdpartymodule_b.dosomething() 有什么方法可以修改的__init__方法,例如,SomeClass当dosomething从mymodule.py调用该方法时,它显示43而不是42?理想情况下,我将能够包装现有方法。 我不能更改thirdpartymodule * .py文件,因为其他脚本取决于现有功能。我宁愿不必创建自己的模块副本,因为我需要进行的更改非常简单。 编辑2013-10-24 在上面的示例中,我忽略了一个很小但很重要的细节。SomeClass是这样导入的thirdpartymodule_b:from thirdpartymodule_a import SomeClass。 要执行FJ建议的补丁,我需要替换其中的副本thirdpartymodule_b,而不是thirdpartymodule_a。例如thirdpartymodule_b.SomeClass.__init__ = new_init。

10
是否可以重载Python分配?
有没有一种魔术方法可以重载赋值运算符,例如__assign__(self, new_value)? 我想禁止为实例重新绑定: class Protect(): def __assign__(self, value): raise Exception("This is an ex-parrot") var = Protect() # once assigned... var = 1 # this should raise Exception() 可能吗?疯了吗 我应该吃药吗?


1
哪些类别不能被子类别化?
是否有关于哪些内置库和标准库类不可归类(“最终”)的规则? 从Python 3.3开始,以下是一些示例: bool function operator.itemgetter slice 我发现了一个问题,涉及用C语言和纯Python实现“最终”类。 我想了解什么原因可以解释为什么首先选择一个班级是“最终的”。


4
具有类名称的动态类定义
如何在Ruby中使用名称动态定义类? 我知道如何动态地创建一个类,而不使用类似的名称: dynamic_class = Class.new do def method1 end end 但是您不能指定类名。我想用名称动态创建一个类。 这是我要执行的操作的示例,但是它实际上并不起作用。 (请注意,我不是在创建类的实例,而是在创建类定义) class TestEval def method1 puts "name: #{self.name}" end end class_name = "TestEval" dummy = eval("#{class_name}") puts "dummy: #{dummy}" dynamic_name = "TestEval2" class_string = """ class #{dynamic_name} def method1 end end """ dummy2 = eval(class_string) puts "dummy2: #{dummy2}" …

6
如何检查是否定义了类?
如何将字符串转换为类名,但前提是该类已经存在? 如果Amber已经是一个类,我可以通过以下方式将字符串从该类中获取: Object.const_get("Amber") 或(在Rails中) "Amber".constantize 但是,NameError: uninitialized constant Amber如果Amber还不是一门课,那么这两种方法都将失败。 我的第一个想法是使用该defined?方法,但它不会区分已经存在的类和不存在的类: >> defined?("Object".constantize) => "method" >> defined?("AClassNameThatCouldNotPossiblyExist".constantize) => "method" 因此,在尝试转换字符串之前,如何测试字符串是否为类命名?(好吧,begin/rescue块捕获NameError错误怎么样?太丑陋了吗?我同意...)



8
类与函数[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 1年前关闭。 改善这个问题 即使对于没有任何编程经验但具有一定数学背景的人,函数也易于理解。另一方面,类似乎更难掌握。 假设我要创建一个类/函数,计算给定生日和当前年份的人的年龄。我应该为此创建类还是函数?还是选择取决于方案? PS我正在使用Python,但是我想这个问题很普遍。
73 class  function  oop 

4
如何在RESTful API中处理对象层次结构?
我目前正在为现有的PHP应用程序设计API,为此,我正在研究REST作为一种明智的体系结构方法。 我相信我对关键概念有一个合理的了解,但是我正在努力寻找能够解决对象层次结构和REST的人。 这是问题所在... 在[应用程序]业务对象层次结构中,我们有: Users L which have one-to-many Channel objects L which have one-to-many Member objects 在应用程序本身中,我们使用延迟加载方法根据需要用这些对象的数组填充User对象。我相信用面向对象的术语讲,这是对象聚合,但是我已经看到了各种命名不一致的问题,并且不关心就精确命名约定发动战争。 现在,考虑一下我有一些松散耦合的对象,这些对象可能会/可能不会填充,这取决于应用程序的需求。 从REST的角度来看,我正在尝试确定应采用的方法。这是我目前的想法(暂时仅考虑GET): 选项1-完全填充对象: GET api.example.com/user/{user_id} 读取User对象(资源),并返回带有所有可能的Channel和Member对象的用户对象,并预先加载和编码(JSON或XML)。 优点:减少对象数量,无需遍历对象层次结构 缺点:必须完全填充对象(昂贵) 选项2-填充主要对象,并包括指向其他​​对象资源的链接: GET api.example.com/user/{user_id} 读取用户对象(资源),并返回用户对象填充的用户数据和两个列表。 每个列表都引用适当的(子)资源,即 api.example.com/channel/{channel_id} api.example.com/member/{member_id} 我认为这与超媒体的含义很接近(或完全一样)-客户端可以根据需要获取其他资源(只要我合理地标记它们)。 优点:客户端可以选择加载下属,否则,可以更好地分离对象作为REST资源。 缺点:需要进一步的行程才能获得辅助资源 选项3-启用递归检索 GET api.example.com/user/{user_id} 阅读用户对象,并包括指向子对象列表的链接,即 api.example.com/user/{user_id}/channels api.example.com/user/{user_id}/members / channels调用将以以下形式返回频道资源列表: api.example.com/channel/{channel_id} 优点:主要资源公开了获取子目录的位置,而不是子目录(更RESTful?),不需要先要求下级,下级列表生成器(/ channels和/ members)提供了接口(类似方法)响应更多的服务喜欢。 缺点:现在需要三个调用才能完全填充对象 选项4-(重新)考虑REST的对象设计 …
72 api  class  rest  object  hierarchy 


12
要使用只读属性还是方法?
我需要公开类实例的“已映射? ”状态。结果通过基本检查确定。它不是简单地暴露字段的值。我不确定应该使用只读属性还是方法。 只读属性: public bool IsMapped { get { return MappedField != null; } } 方法: public bool IsMapped() { return MappedField != null; } 我已经阅读了MSDN的“属性和方法之间的选择”,但仍不确定。
72 c#  .net  class  methods  properties 

5
如何访问数组/对象?
我有以下数组,当我做得到print_r(array_values($get_user));: Array ( [0] => 10499478683521864 [1] => 07/22/1983 [2] => email@saya.com [3] => Alan [4] => male [5] => Malmsteen [6] => https://www.facebook.com app_scoped_user_id/1049213468352864/ [7] => stdClass Object ( [id] => 102173722491792 [name] => Jakarta, Indonesia ) [8] => id_ID [9] => El-nino [10] => Alan El-nino Malmsteen [11] …

8
调用类方法会在Python中引发TypeError
我不明白如何使用类。当我尝试使用该类时,以下代码给我一个错误。 class MyStuff: def average(a, b, c): # Get the average of three numbers result = a + b + c result = result / 3 return result # Now use the function `average` from the `MyStuff` class print(MyStuff.average(9, 18, 27)) 错误: File "class.py", line 7, in <module> print(MyStuff.average(9, 18, …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.