类是用户定义的蓝图或原型,从中创建对象。类提供了一种将数据和功能捆绑在一起的方法。创建新类会创建新类型的对象,从而允许创建该类型的新实例。每个类实例都可以附加属性来维护其状态。类实例还可以具有用于修改其状态的方法(由其类定义)。
为了理解在Python中创建类和对象的需求,让我们考虑一个示例,假设您想要跟踪可能具有不同属性(如品种和年龄)的狗的数量。如果使用列表,第一个元素可以是狗的品种,而第二个元素可以代表它的年龄。假设有 100 只不同的狗,那么你怎么知道哪个元素应该是哪个呢?如果您想为这些狗添加其他属性怎么办?这缺乏组织性,而这正是上课的需要。
语法:类定义
class ClassName: # Statement
语法:对象定义
obj = ClassName() print(obj.atrr)
该类创建一个用户定义的数据结构,它保存自己的数据成员和成员函数,可以通过创建该类的实例来访问和使用它们。类就像对象的蓝图。
Python 类的一些要点:
在这里,class 关键字表示您正在创建一个类,后跟该类的名称(在本例中为 Dog)。
class Dog: sound = "bark"
对象是类的实例。类就像一个蓝图,而实例是具有实际值的类的副本。这不再是一个想法,而是一只真正的狗,就像一只七岁的哈巴狗。您可以让许多狗来创建许多不同的实例,但是如果没有类作为指导,您就会迷失方向,不知道需要什么信息。
一个对象由以下部分组成:
当创建类的对象时,该类就被实例化。所有实例共享类的属性和行为。但这些属性的值(即状态)对于每个对象来说都是唯一的。单个类可以有任意数量的实例。
例子:
在 Python 中创建对象涉及实例化一个类以创建该类的新实例。此过程也称为对象实例化。
# Python3 program to # demonstrate instantiating # a class class Dog: # A simple class # attribute attr1 = "mammal" attr2 = "dog" # A sample method def fun(self): print("I'm a", self.attr1) print("I'm a", self.attr2) # Driver code # Object instantiation Rodger = Dog() # Accessing class attributes # and method through objects print(Rodger.attr1) Rodger.fun()
输出:
mammal I'm a mammal I'm a dog
在上面的示例中,创建了一个对象,它基本上是一只名为 Rodger 的狗。该类只有两个类属性,这两个属性告诉我们 Rodger 是狗和哺乳动物。
解释 :
在此示例中,我们创建了一个 Dog 类,并创建了两个类变量attr1 和 attr2。我们创建了一个名为fun()的方法,它返回字符串“I'm a, {attr1}”和 I'm a, {attr2}。我们创建了 Dog 类的对象,并在该对象的attr1处进行打印。最后,我们调用fun() 函数。
当我们调用该对象的方法 myobject.method(arg1, arg2) 时,Python 会自动将其转换为 MyClass.method(myobject, arg1, arg2) – 这就是特殊 self 的全部内容。
class GFG: def __init__(self, name, company): self.name = name self.company = company def show(self): print("Hello my name is " + self.name+" and I" + " work in "+self.company+".") obj = GFG("John", "GeeksForGeeks") obj.show()
Self参数并不称其为 Self,您可以使用任何其他名称来代替它。这里我们将 self 改为某人,输出将是相同的。
class GFG: def __init__(somename, name, company): somename.name = name somename.company = company def show(somename): print("Hello my name is " + somename.name + " and I work in "+somename.company+".") obj = GFG("John", "GeeksForGeeks") obj.show()
输出:两个代码的输出将是相同的。
Hello my name is John and I work in GeeksForGeeks.
解释:
在此示例中,我们正在创建一个 GFG 类,并在构造函数中创建了名称和公司实例变量。我们创建了一个名为say_hi()的方法,它返回字符串“Hello my name is ” + {name} +”,我在“+{company}+”工作。”。我们创建了一个 person 类对象,并将名称 John 和 Company GeeksForGeeks 传递给实例变量。最后,我们调用该类的show() 。
程序的执行不受pass语句不作为的影响。它仅允许程序跳过该部分代码而不执行任何操作。当 Python 的语法约束要求有效的语句但不必执行有用的代码时,经常使用它。
class` `MyClass:`` ``pass
init方法类似于C++和Java中的构造函数。构造函数用于初始化对象的状态。与方法一样,构造函数也包含在创建对象时执行的语句(即指令)集合。一旦类的对象被实例化,它就会运行。该方法对于执行您想要对对象执行的任何初始化非常有用。
# Sample class with init method class Person: # init method or constructor def __init__(self, name): self.name = name # Sample Method def say_hi(self): print('Hello, my name is', self.name) p = Person('Nikhil') p.say_hi()
Hello, my name is Nikhil
在此示例中,我们正在创建一个 Person 类,并在构造函数中创建了一个name实例变量。我们创建了一个名为 say_hi() 的方法,它返回字符串“Hello,我的名字是 {name}”。我们创建了一个 person 类对象,并将名称 Nikhil 传递给实例变量。最后,我们调用该类的 say_hi()。
str() method
Python 有一个名为str()的特殊方法。用于定义类对象应如何表示为字符串。它通常用于为对象提供人类可读的文本表示形式,这有助于记录、调试或向用户显示对象信息。当类对象使用内置函数 print() 和 str() 创建字符串时,会自动使用str()函数。您可以通过定义str()方法来更改**类**的对象在字符串中的表示方式。
class GFG: def __init__(self, name, company): self.name = name self.company = company def __str__(self): return f"My name is {self.name} and I work in {self.company}." my_obj = GFG("John", "GeeksForGeeks") print(my_obj)
My name is John and I work in GeeksForGeeks.
在此示例中,我们将创建一个名为 GFG 的类。在该类中,我们将创建两个实例变量name 和 company。在 str() 方法中,我们返回名称实例变量和公司实例变量。最后,我们创建 GFG 类的对象,并调用 str() 方法。
实例变量用于数据,对于每个实例都是唯一的,类变量用于类的所有实例共享的属性和方法。实例变量是在构造函数或方法内部使用 self 赋值的变量,而类变量是在类中赋值的变量。
使用构造函数定义实例变量。
# Python3 program to show that the variables with a value # assigned in the class declaration, are class variables and # variables inside methods and constructors are instance # variables. # Class for Dog class Dog: # Class Variable animal = 'dog' # The init method or constructor def __init__(self, breed, color): # Instance Variable self.breed = breed self.color = color # Objects of Dog class Rodger = Dog("Pug", "brown") Buzo = Dog("Bulldog", "black") print('Rodger details:') print('Rodger is a', Rodger.animal) print('Breed: ', Rodger.breed) print('Color: ', Rodger.color) print('\nBuzo details:') print('Buzo is a', Buzo.animal) print('Breed: ', Buzo.breed) print('Color: ', Buzo.color) # Class variables can be accessed using class # name also print("\nAccessing class variable using class name") print(Dog.animal)
Rodger details: Rodger is a dog Breed: Pug Color: brown Buzo details: Buzo is a dog Breed: Bulldog Color: black Accessing class variable using class name dog
定义名为 Dog 的类,并将类变量设置为字符串“dog”。类变量由类的所有对象共享,并且可以使用类名进行访问。Dog 类有两个实例变量Breed 和 Color。稍后我们将创建Dog类的两个对象,并使用名为animal 的类变量打印这两个对象的值。
使用普通方法定义实例变量:
# Python3 program to show that we can create # instance variables inside methods # Class for Dog class Dog: # Class Variable animal = 'dog' # The init method or constructor def __init__(self, breed): # Instance Variable self.breed = breed # Adds an instance variable def setColor(self, color): self.color = color # Retrieves instance variable def getColor(self): return self.color # Driver Code Rodger = Dog("pug") Rodger.setColor("brown") print(Rodger.getColor())
brown
在此示例中,我们定义了一个名为Dog的类,并 创建了一个类变量animal。我们在构造函数中创建了一个实例变量breed 。Dog类由两个方法setColor和getColor组成,它们用于创建和初始化实例变量以及检索实例变量的值。我们创建了Dog类的对象,并将实例变量值设置为棕色,并在终端中打印该值。
原文链接:codingdict.net