类是用户定义的蓝图或原型,从中创建对象。类提供了一种将数据和功能捆绑在一起的方法。创建新类会创建新类型的对象,从而允许创建该类型的新实例。每个类实例都可以附加属性来维护其状态。类实例还可以具有用于修改其状态的方法(由其类定义)。
为了理解在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