面向对象编程(OOP)基础概念

面向对象编程OOP)是一种基于“对象”概念的编程范式。在OOP中,对象被定义为具有一组属性/特性。OOP之所以重要,是因为它帮助开发者编写清晰、模块化的代码,这些代码可以在开发过程中被重用。模块化编码使能够控制函数和模块,这在大型应用开发中尤为重要。

、实例/对象和构造方法

如果是初学者,花一些时间理解以下术语是很重要的。是具有一组预定义属性的对象的自定义蓝图,这些属性对所有对象都是共同的。实例/对象是从类创建的个体实体。构造方法OOP中是一个特殊的函数,用于初始化属性。在其他编程语言中,它被称为构造器。

创建类和对象

创建一个:使用class语句可以创建一个新类,并给定一个类名。在Python中,类名遵循帕斯卡命名法,即每个单词都以大写字母开头,不使用任何特殊字符。初始化属性/变量:使用n个属性初始化对象,即attr1、attr2等。创建方法:方法是基于规则的函数集合,这些规则定义了对象的行为。创建了两个方法,分别命名为method1和method2。根据需要选择方法输入。这里,method1除了对象本身外不接受任何输入,而method2接受self.attr2并对其进行操作。

class ClassName: def __init__(self, attr1, attr2): self.attr1 = attr1 self.attr2 = attr2 def method1(self): pass def method2(self, attr2): pass class BlogathonAuthors: def __init__(self, author_name, num_articles): self.author_name = author_name self.num_articles = num_articles print("Created new author object") def show(self): """This method prints the details of the author""" print("In show method") print(f"Author Name: {self.author_name}\nNum of published articles: {self.num_articles}") def update(self, num_articles): """This method updates the number of published articles""" print("In update method") self.num_articles = num_articles

创建实例/对象

从类创建实例或对象的过程称为实例化。在创建对象时,应该传递在构造方法中定义的参数。

author1 = BlogathonAuthors("Harika", 10) author2 = BlogathonAuthors("Joey", 23)

访问属性和调用方法

访问属性的语法是object.attribute。名字通过author1.author_name访问,文章数量通过author1.num_articles访问。不仅可以显示这些值,还可以更改它们。

author1.num_articles = 9

调用方法有两种方式:ClassName.method(object)或object.method()。调用show方法以显示author1的信息。

BlogathonAuthors.show(author1) author1.show()

如果熟悉Python中的函数,可能会怀疑“show”方法接受一个参数,但没有传递任何参数。思考一下这里发生了什么,然后继续阅读以了解答案。show(self)方法接受一个参数,即对象本身。这里的self关键字指向类/对象的实例。因此,当调用object.method()时,实际上是将对象作为参数传递。

现在,调用update方法并更改文章数量。

author1.update(20)

更新后,如果查看author1的详细信息,文章数量将变为20。

class BlogathonAuthors: type = "freelancer" def __init__(self, author_name, num_articles): self.author_name = author_name self.num_articles = num_articles print("Created new author object") def show(self): """This method prints the details of the author""" print("In show method") print(f"Author Name: {self.author_name}\nNum of published articles: {self.num_articles}\nType of Work: {BlogathonAuthors.type}") def update(self, num_articles): """This method updates the number of published articles""" print("In update method") self.num_articles = num_articles def total_articles(self, draft): total = self.num_articles + draft print(f"Total articles are: {total}") @classmethod def return_type(cls): return cls.type @staticmethod def stat_method(): print("I am a static method") BlogathonAuthors.return_type() BlogathonAuthors.stat_method()
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485