Questions tagged «class»

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

8
在pickle文件中保存和加载多个对象?
我有一堂课,为游戏中的玩家提供服务,创建他们以及其他东西。 我需要将这些播放器对象保存在文件中,以便以后使用。我已经尝试过pickle模块,但是我不知道如何保存多个对象并再次加载它们?有没有办法做到这一点,还是应该使用其他类(例如列表)并将对象保存并加载到列表中? 有没有更好的办法?

6
Python类方法的示例用例是什么?
我已经阅读了Python中的Class方法有什么用?但是这篇文章中的例子很复杂。我正在寻找一个清晰,简单,准系统的Python类方法用例的例子。 您能否列举一个小的特定示例用例,其中Python类方法将是完成此工作的正确工具?

4
PHP中的类是什么?
我从书中了解PHP类时遇到了严重的问题。他们似乎很难。它们的目的是什么?它们如何工作?
68 php  class 


4
如何调用模板类型的正确构造函数?
在以下代码中,如何使注释行与其上方的行一样工作? 我想将其设为通用代码,以调用合适的template构造函数Type。 #include <string> #include <iostream> template <typename Type> struct Class { Type data; Class(Type data) : data(data) { } }; int main() { Class<std::string> a = std::string("abc"); // Class<std::string> b = "abc"; std::cout << a.data << std::endl; return 0; }


1
当空基类也是成员变量时,为什么禁止空基优化?
空基优化非常棒。但是,它具有以下限制: 如果空基类之一也是第一个非静态数据成员的类型或类型的基,则禁止空基优化,因为相同类型的两个基子对象需要在对象表示中具有不同的地址最派生的类型。 要解释此限制,请考虑以下代码。该static_assert会失败。而将Foo或更改为或Bar从继承Base2将避免错误: #include <cstddef> struct Base {}; struct Base2 {}; struct Foo : Base {}; struct Bar : Base { Foo foo; }; static_assert(offsetof(Bar,foo)==0,"Error!"); 我完全了解这种行为。我不明白的是为什么存在这种特殊行为。显然添加它是有原因的,因为它是显式添加,而不是疏忽。这样做的理由是什么? 特别是为什么要要求两个基本子对象具有不同的地址?在上面,Bar是一个类型,并且foo是该类型的成员变量。我看不出为什么基类对Bar类型为的基类很重要foo,反之亦然。 确实,如果有的话,我希望它&foo与Bar包含它的实例的地址相同,因为在其他情况下它是必需的(1)。毕竟,我对virtual继承没有任何幻想,无论如何基类都是空的,并且带有的编译Base2显示在这种特殊情况下没有任何中断。 但是显然,这种推理在某种程度上是不正确的,并且在其他情况下,也需要这种限制。 假设答案应该针对C ++ 11或更高版本(我目前正在使用C ++ 17)。 (1)注意:EBO在C ++ 11中进行了升级,并且特别成为StandardLayoutTypes的必需项(尽管Bar,上面不是StandardLayoutType)。

4
与标准卡组相比,为更复杂的扑克牌类型创建类的好方法吗?
我对面向对象的编程非常陌生,并且正尝试通过制作简单的纸牌游戏(似乎很传统!)来开始使用python学习。我已经完成了下面的示例,该示例运行良好,并且教会了我有关制作PlayingCard()该类的多个实例以创建该类的实例的信息Deck(): class PlayingCard(object): def __init__(self, suit, val): self.suit = suit self.value = val def print_card(self): print("{} of {}".format(self.value, self.suit)) class Deck(object): def __init__(self): self.playingcards = [] self.build() def build(self): for s in ["Spades", "Clubs", "Diamonds", "Hearts"]: for v in range(1,14): self.playingcards.append(PlayingCard(s,v)) deck = Deck() 我现在想用更复杂的卡做一些事情,而不仅仅是一个标准的52副牌(具有很好的递增值)。我想到的套牌是“大富翁”纸牌游戏: 卡共有3种基本类型-ACTION卡,PROPERTY卡和MONEY卡。操作卡执行不同的操作,属性卡属于不同的颜色集,而货币卡可以具有不同的值。此外,属性卡可以是“通配符”,并且可以用作两个集合之一的一部分。最后,每张卡还具有同等的货币价值(在每张卡的左上角指示)。在租赁行动卡中,该卡只能应用于卡上指示的颜色属性。 我的问题只是一般如何处理这种情况,在基于类的python程序中包括这些不同的卡的最佳方法是什么?我应该保持我的单一PlayingCard()班级,并且只有很多输入,例如PlayingCard(type="PROPERTY", value="3M")。还是会更好地创建单独的类,如ActionPlayingCard(),PropertyPlayingCard()等?或者,还有更好的方法?就像我说的那样,我正在这里开始学习,以及如何根据更高级别的设计来组织这类情况。 非常感谢。
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.