Python OOPs:类、对象、继承和构造函数(附带示例)

Python 中的 OOPs

Python 中的 OOPs 是一种编程方法,它像其他通用编程语言一样,侧重于使用对象和类。对象可以是任何现实世界的实体。Python 允许开发人员使用 OOPs 方法开发应用程序,并主要关注代码的可重用性。在 Python 中创建类和对象非常容易。

什么是类?

Python 中的类是数据和函数的逻辑分组。它提供了创建包含任意内容且易于访问的数据结构的自由。

例如,任何想要在线获取客户详细信息的银行员工都会转到客户类,其中列出了其所有属性,如交易详情、取款和存款详情、未偿还债务等。

如何定义 Python 类

要定义类,您需要考虑以下几点

第 1 步) 在 Python 中,类由 “Class” 关键字定义

class myClass():

第 2 步) 在类内部,您可以定义属于该类的函数或方法

def method1 (self):
   print "Guru99"
def method2 (self,someString): 
   print "Software Testing:" + someString
  • 这里我们定义了打印“Guru99”的 method1。
  • 我们定义的另一个方法是 method2,它打印“Software Testing”+ SomeString。SomeString 是由调用方法提供的变量

第 3 步) 类中的所有内容都像函数、循环、if 语句等中的代码一样进行缩进。任何未缩进的内容都不在类中

Define Python classes

注意:关于在 Python 中使用“self”

  • self 参数指的是对象本身。因此,使用了 self 这个词。所以在这个方法内部,self 将指代正在操作的该对象的特定实例。
  • Self 是 Python 约定首选的名称,用于指示 Python 中实例方法的第一个参数。它是访问对象成员的 Python 语法的一部分

第 4 步) 创建类的对象

c = myClass()

第 5 步) 调用类中的方法

c.method1()
    c.method2(" Testing is fun")
  • 请注意,当我们调用 method1 或 method2 时,我们不必提供 self 关键字。Python 运行时会自动为我们处理。
  • 当您在实例上调用实例方法时,Python 运行时会传递“self”值,无论您是有意提供还是无意提供
  • 您只需要关心非 self 参数

第 6 步) 这是完整的代码

# Example file for working with classes
class myClass():
  def method1(self):
      print("Guru99")
        
  def method2(self,someString):    
      print("Software Testing:" + someString)
  
      
def main():           
  # exercise the class methods
  c = myClass ()
  c.method1()
  c.method2(" Testing is fun")
  
if __name__== "__main__":
  main()

继承是如何工作的

继承是面向对象编程中使用的一种特性;它指的是定义一个新类,而对现有类的修改很少或没有修改。新类称为派生类,而它继承的类称为基类。Python 支持继承;它也支持多重继承。一个类可以继承另一个称为子类或继承类的类的属性和行为方法。

Define Python classes

Python 继承语法

class DerivedClass(BaseClass):
    body_of_derived_class

第 1 步) 运行以下代码

# Example file for working with classes
class myClass():
  def method1(self):
      print("Guru99")
        
  
class childClass(myClass):
  #def method1(self):
        #myClass.method1(self);
        #print ("childClass Method1")
        
  def method2(self):
        print("childClass method2")     
         
def main():           
  # exercise the class methods
  c2 = childClass()
  c2.method1()
  #c2.method2()

if __name__== "__main__":
  main()

请注意,在 childClass 中,method1 未定义,但它继承自 parent myClass。输出是“Guru99”。

第 2 步) 取消注释第 8 行和第 10 行。运行代码

现在,method 1 在 childClass 中定义,并且正确显示了输出“childClass Method1”。

第 3 步) 取消注释第 9 行。运行代码

您可以使用以下语法调用父类的函数:

ParentClassName.MethodName(self)

在我们的例子中,我们调用 myClass.method1(self),并按预期打印出 Guru99。

第 4 步) 取消注释第 19 行。运行代码。

child 类的 Method 2 被调用,并且按预期打印了“childClass method2”。

Python 构造函数

构造函数是一个类函数,它以预定义的值实例化一个对象。

它以双下划线(__)开头。它是 __init__() 方法

在下面的示例中,我们使用构造函数获取用户的姓名。

class User:
    name = ""

    def __init__(self, name):
        self.name = name

    def sayHello(self):
        print("Welcome to Guru99, " + self.name)

User1 = User("Alex")
User1.sayHello()

输出将是

欢迎来到 Guru99,Alex

Python 2 示例

以上代码是 Python 3 示例,如果您想在 Python 2 中运行,请参考以下代码。

# How to define Python classes
# Example file for working with classes
class myClass():
  def method1(self):
      print "Guru99"
        
  def method2(self,someString):    
      print "Software Testing:" + someString
      
   
      
def main():           
  # exercise the class methods
  c = myClass ()
  c.method1()
  c.method2(" Testing is fun")
  
if __name__== "__main__":
  main()


#How Inheritance works
# Example file for working with classes
class myClass():
  def method1(self):
      print "Guru99"
        
      
class childClass(myClass):
  #def method1(self):
        #myClass.method1(self);
        #print "childClass Method1" 
        
  def method2(self):
        print "childClass method2"     
         
def main():           
  # exercise the class methods
  c2 = childClass()
  c2.method1()
  #c2.method2()

if __name__== "__main__":
  main()

了解我们关于 Python 多态性 的下一个教程

摘要

“类”是函数和数据的逻辑分组。Python 类提供了面向对象编程的所有标准功能。

  • 类继承机制
  • 一个派生类,它覆盖了其基类的任何函数
  • 一个函数可以调用同名基类的函数
  • Python 类由关键字 “class” 本身定义
  • 在类内部,您可以定义属于该类的函数或方法
  • 类中的所有内容都像函数、循环、if 语句等中的代码一样进行缩进。
  • Python 中的 self 参数指的是对象本身。Self 是 Python 约定首选的名称,用于指示 Python 中实例方法的第一个参数
  • 当您在实例上调用实例方法时,Python 运行时会自动传递“self”值,无论您是有意提供还是无意提供
  • 在 Python 中,一个类可以从另一个称为子类或继承类的类继承属性和行为方法。