摘要:以下的区别有意义么如果你需要创建很多实例,这两种风格在表现和空间要求上有什么区别么当你阅读代码的时候,你是否会考虑这两种风格的重要区别除了表现上的考虑,这边有一个重要的语义上的不同。用实例属性设置的实例中,实例有可能被多个对象引用。
以下的区别有意义么?
class A(object): foo = 5 # some default value
Vs
class B(object): def __init__(self, foo=5): self.foo = foo
如果你需要创建很多实例,这两种风格在表现和空间要求上有什么区别么?当你阅读代码的时候,你是否会考虑这两种风格的重要区别?
除了表现上的考虑,这边有一个重要的语义上的不同。在类属性的那个例子中,只有一个对象被引用。用实例属性设置的实例中,实例有可能被多个对象引用。比如说:
>>> class A: foo =[ ] >>> a, b = A(), A() >>> a.foo.append(5) >>> b.foo [5] >>> class A: ... def __init__(self): self.foo = [ ] >>> a, b = A(), A() >>> a.foo.append(5) >>> b.foo []
来源:Python: Difference between class and instance attributes
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/38199.html
摘要:以下的区别有意义么如果你需要创建很多实例,这两种风格在表现和空间要求上有什么区别么当你阅读代码的时候,你是否会考虑这两种风格的重要区别除了表现上的考虑,这边有一个重要的语义上的不同。用实例属性设置的实例中,实例有可能被多个对象引用。 以下的区别有意义么? class A(object): foo = 5 # some default value Vs class B(ob...
摘要:不像其他属性,描述符在类级别上创建。当所有者类被定义时,每个描述符对象都是被绑定到一个不同的类级别属性的描述符类实例。这必须返回描述符的值。此外,描述符对有一个方便的响应和请求格式。 注:原书作者 Steven F. Lott,原书名为 Mastering Object-oriented Python __getattribute__()方法 __getattribute__()方法是...
摘要:同时,有多个类级别的静态构造函数的方法。这个累赘,无论如何,是被传递到每个单独的对象构造函数表达式中。我们可能只有几个特定的担忧,提供额外关键字参数给构造函数。 注:原书作者 Steven F. Lott,原书名为 Mastering Object-oriented Python 没有__init__()的无状态对象 下面这个示例,是一个简化去掉了__init__()的类。这是一个常见...
摘要:如果还是没有找到,就会使用父类中的元类来创建类。元类通常用于处理比较复杂的情况。这是因为使用了元类,它会将中定义的字段转换成数据库中的字段。中所有数据类型都是对象,它们要么是类的实例要么是元类的实例。 原文地址:what is metaclass in Python?我的简书地址::nummy 类即对象 在理解元类之前,需要先掌握Python中的类,Python中类的概念与SmallT...
摘要:第一是在对象生命周期中初始化是最重要的一步每个对象必须正确初始化后才能正常工作。第二是参数值可以有多种形式。基类对象的方法对象生命周期的基础是它的创建初始化和销毁。在某些情况下,这种默认行为是可以接受的。 注:原书作者 Steven F. Lott,原书名为 Mastering Object-oriented Python __init__()方法意义重大的原因有两个。第一是在对象生命...
阅读 2541·2021-11-23 09:51
阅读 2457·2021-09-30 09:48
阅读 1046·2021-09-10 10:51
阅读 2162·2021-08-12 13:22
阅读 3523·2021-08-11 10:24
阅读 2101·2019-08-30 15:55
阅读 586·2019-08-30 14:05
阅读 3180·2019-08-30 13:03