Python面向对象

Python基础10 面向对象

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面向对象

  声明一个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 是一种面向对象的编程语言。与面向过程的编程主要强调函数不同,面向对象的编程强调对象。

推荐:零基础如何开始学习Python

给文章评分

晓得博客,版权所有丨如未注明,均为原创
晓得博客 » Python基础10 面向对象

转载请保留链接:https://www.pythonthree.com/python-classes-and-objects-2/

Claude、Netflix、Midjourney、ChatGPT Plus、PS、Disney、Youtube、Office 365、多邻国Plus账号购买,ChatGPT API购买,优惠码XDBK,用户购买的时候输入优惠码可以打95折

Chatgpt-Plus注册购买共享账号
滚动至顶部