Python面向对象
类是用户定义的蓝图或原型,从中创建对象。类提供了一种将数据和功能捆绑在一起的方法。创建新类会创建新类型的对象,从而允许创建该类型的新实例。每个类实例都可以附加属性以维护其状态。类实例也可以有方法(由它们的类定义)来修改它们的状态。
在之前,我们介绍了面向对象的基本概念,要了解创建类,让我们先看一个示例,假设您想跟踪可能具有不同属性(如品种、年龄)的狗的数量。如果使用列表,第一个元素可以是狗的品种,而第二个元素可以代表它的年龄。假设有 100 只不同的狗,那么你怎么知道哪个元素应该是哪个?如果您想为这些狗添加其他属性怎么办?这就是python面象对象快速可以实现的功能。
类创建用户定义的数据结构,该结构保存自己的数据成员和成员函数,可以通过创建该类的实例来访问和使用这些数据成员和成员函数。
Python类的一些特点:
- 类是通过关键字 class 创建的。
- 属性是属于类的变量。
- 属性始终是公共的,可以使用点 (.) 运算符访问。例如:Myclass.Myattribute
类定义语法:
Class Definition Syntax:
class ClassName:
# Statement-1
.
.
.
# Statement-N
定义一个类—
- python 3
class Dog:
pass
在上面的示例中, class 关键字表示您正在创建一个类,后跟类的名称(在本例中为 Dog)。
类对象
在Python面象对象中,一个对象是一个类的实例。类就像蓝图,而实例是具有实际值的类的副本。例如,它是一只真正的狗,就像一只七岁的哈巴狗。您可以拥有许多狗来创建许多不同的实例,但是如果没有该类作为指导,您会迷失在代码的海阳镇,不知道需要什么信息。可参考更多类对象
一个对象包括—
- 状态:由对象的属性表示。它还反映了对象的属性。
- 行为:它由对象的方法表示。它还反映了一个对象对其他对象的响应。
- 身份:它为对象提供唯一的名称,并使一个对象能够与其他对象交互。
声明对象(实例化类)
当一个类的对象被创建时,这个类就被称为实例化了。所有实例共享类的属性和行为。但是这些属性的值,即状态对于每个对象都是唯一的。一个类可以有任意数量的实例。
例子:
声明一个Python对象—
- python 3
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 是一只狗和一只哺乳动物。
self
- 类方法在方法定义中必须有一个额外的第一个参数。我们在调用方法时没有给这个参数赋值,Python 提供了它。
- 如果我们有一个不带参数的方法,那么我们仍然必须有一个参数。
- 这类似于 C++ 中的 this 指针和 Java 中的 this 引用。
当我们将这个对象的一个方法调用为 myobject.method(arg1, arg2) 时,它会被 Python 自动转换为 MyClass.method(myobject, arg1, arg2) —— 这就是 self 的全部意义所在。
__init__ 方法
__init___方法类似于 C++ 和 Java 中的构造函数。构造函数用于初始化对象的状态。与方法一样,构造函数也包含一组在创建对象时执行的语句(即指令)。一旦类的对象被实例化,它就会运行。该方法可用于执行您想要对对象进行的任何初始化。
- python 3
# A 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
类和实例变量
实例变量用于数据,每个实例都是唯一的,类变量用于类的所有实例共享的属性和方法。实例变量是其值在构造函数或具有 self 的方法中赋值的变量,而类变量是其值在类中赋值的变量。
使用构造函数定义实例变量。
- python 3
# 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
使用普通方法定义实例变量。
- python 3
# 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
总结
以上是Python面向对象的内容,Python 是一种面向对象的编程语言。与面向过程的编程主要强调函数不同,面向对象的编程强调对象。
Claude、Netflix、Midjourney、ChatGPT Plus、PS、Disney、Youtube、Office 365、多邻国Plus账号购买,ChatGPT API购买,优惠码XDBK,用户购买的时候输入优惠码可以打95折