python中的类定义语法 我对Python非常陌生。我正在使用一些Python代码。我正在尝试将Python面向对象的概念映射到C++中,我认为这是一种很好的学习方法。我可以跨越两类定义。 class SourcetoPort(Base): """""" __tablename__ = 'source_to_port' id = Column(Integer, primary_key=True) port_no = Column(Integer) src_address = Column(String) #---------------------------------------------------------------------- def __init__(self, src_address,port_no): """""" self.src_address = src_address self.port_no = port_no

python中的类定义语法 我对Python非常陌生。我正在使用一些Python代码。我正在尝试将Python面向对象的概念映射到C++中,我认为这是一种很好的学习方法。我可以跨越两类定义。 class SourcetoPort(Base): """""" __tablename__ = 'source_to_port' id = Column(Integer, primary_key=True) port_no = Column(Integer) src_address = Column(String) #---------------------------------------------------------------------- def __init__(self, src_address,port_no): """""" self.src_address = src_address self.port_no = port_no,python,python-2.7,Python,Python 2.7,还有第二个 class Tutorial (object): def __init__ (self, connection): print "calling Tutorial __init__" self.connection = connection connection.addListeners(self) self.mac_to_port = {} self.matrix={} 我想知道SourcetoPort中的基和教程中的对象之间有什么

还有第二个

class Tutorial (object):
  def __init__ (self, connection):
    print "calling Tutorial __init__"
    self.connection = connection
    connection.addListeners(self)
    self.mac_to_port = {} 
    self.matrix={} 

我想知道SourcetoPort中的基和教程中的对象之间有什么区别?

在Python 2.2中引入了新的样式类,它们应该以
对象作为父类。如果没有
对象
作为(大)父对象,它将是一个老式的类。在Python3中,所有类都是“新的”


继承
对象
会提供很多,包括描述符、属性等。即使您不打算使用它们,也最好继承
对象

在Python2.2中引入了新样式的类,它们应该将
对象
作为父类。如果没有
对象
作为(大)父对象,它将是一个老式的类。在Python3中,所有类都是“新的”


对象继承
会提供很多,包括描述符、属性等。即使您不打算使用它们,也最好继承
对象

您似乎在第一种情况下使用了SQLAlchemy。您绝对不能错过声明(或者更确切地说,执行)方面的差异

除此之外,您的
SourcePort
类还依赖于元类

A本质上是一个可以改变或动态生成类内容的函数。它让人想起C++模板,但是在运行时(在Python中,在运行时发生的一切)。 因此,奇怪的
Base
类或它的一些父类绑定了一个元类。执行
class SourcePort…
语句后,元类将修改
SourcePort
类的内容。元类读取解释表名、列等的初始属性,并添加到
SourcePort
各种方法中,以按名称访问数据库字段,就像它们是
SourcePort
的字段一样,是可能延迟加载列内容的getter(如果最初声明是这样),更改
SourcePort
实例的“脏”状态的setter,将ORM对象绑定到数据库会话的所有机制,等等

所以是的,有一个严重的区别


一个不请自来的建议:为了更好地理解Python类,不要试图对C++类进行类推。他们有一些共同的特点,但有着巨大的差异。只要了解Python类,就好像它们是一个完全陌生的概念

在第一种情况下,您似乎正在使用SQLAlchemy。您绝对不能错过声明(或者更确切地说,执行)方面的差异

除此之外,您的
SourcePort
类还依赖于元类

A本质上是一个可以改变或动态生成类内容的函数。它让人想起C++模板,但是在运行时(在Python中,在运行时发生的一切)。 因此,奇怪的
Base
类或它的一些父类绑定了一个元类。执行
class SourcePort…
语句后,元类将修改
SourcePort
类的内容。元类读取解释表名、列等的初始属性,并添加到
SourcePort
各种方法中,以按名称访问数据库字段,就像它们是
SourcePort
的字段一样,是可能延迟加载列内容的getter(如果最初声明是这样),更改
SourcePort
实例的“脏”状态的setter,将ORM对象绑定到数据库会话的所有机制,等等

所以是的,有一个严重的区别


一个不请自来的建议:为了更好地理解Python类,不要试图对C++类进行类推。他们有一些共同的特点,但有着巨大的差异。只要了解Python类,就好像它们是一个完全陌生的概念

你所说的差异是什么意思?SourcePort是从Base派生的,教程是从object继承的。你可能会发现(以及本段底部的链接)很有用。你所说的差异是什么意思?SourcePort是从Base派生的,教程是从object继承的。您可能会发现(以及段落底部的链接)很有用。