本文概述
类是用户定义的蓝图或原型, 从中可以创建对象。类提供了一种将数据和功能捆绑在一起的方法。创建新类将创建一种新的对象类型, 从而允许创建该类型的新实例。每个类实例可以具有附加的属性以维护其状态。类实例还可以具有用于修改其状态的方法(由其类定义)。
为了了解创建班级的必要性, 我们来看一个例子, 假设你想跟踪可能具有不同属性(例如品种, 年龄)的狗的数量。如果使用列表, 则第一个元素可能是狗的品种, 而第二个元素可能代表狗的年龄。假设有100条不同的狗, 那么你怎么知道哪个元素应该是哪个?如果你想为这些狗添加其他属性怎么办?这缺乏组织性, 而这正是上课的真正需要。
类创建一个用户定义的数据结构, 该结构拥有自己的数据成员和成员函数, 可以通过创建该类的实例来访问和使用它们。类就像对象的蓝图。
Python类的一些要点:
- 类由关键字创建类.
- 属性是属于类的变量。
- 属性始终是公共属性, 可以使用点(。)运算符进行访问。例如:Myclass.Myattribute
Class Definition Syntax:
class ClassName:
# Statement-1
.
.
.
# Statement-N
定义课程–
# Python program to
# demonstrate defining
# a class
class Dog:
pass
在上面的示例中, 类关键字表示你正在创建一个类, 后跟该类的名称(在本例中为" Dog")。
类对象
对象是类的实例。类就像一个蓝图, 而实例是该类的副本, 实际值。这不再是个主意, 而是一条真实的狗, 就像七岁的哈巴狗。你可以有很多狗来创建许多不同的实例, 但是如果没有该类的指导, 你会迷路, 不知道需要什么信息。
一个对象包括:
- 状态:它由对象的属性表示。它还反映了对象的属性。
- 行为:它由对象的方法表示。它还反映了一个对象对其他对象的响应。
- 身份:它为一个对象赋予唯一的名称, 并使一个对象能够与其他对象进行交互。
声明对象(也称为实例化类)
当创建一个类的对象时, 该类被称为实例化。所有实例都共享类的属性和行为。但是这些属性的值, 即状态对于每个对象都是唯一的。单个类可以具有任意数量的实例。
例子:
声明一个对象–
# Python program to
# demonstrate instantiating
# a class
class Dog:
# A simple class
# attribute
attr1 = "mamal"
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()
输出如下:
mamal
I'm a mamal
I'm a dog
在上面的示例中, 创建了一个对象, 该对象基本上是一只名为Rodger的狗。此类仅具有两个类别属性, 这些属性告诉我们罗杰是狗和哺乳动物。
self
- 类方法在方法定义中必须有一个额外的第一个参数。当我们调用方法时, 我们没有为该参数提供值, Python提供了它。
- 如果我们有一个不带参数的方法, 那么我们仍然必须有一个参数。
- 这类似于C ++中的此指针和Java中的此引用。
当我们将此对象的方法称为myobject.method(arg1, arg2), 这会被Python自动转换为MyClass.method(myobject, arg1, arg2)–这就是所有特殊的自我。
__init__方法
的__在里面__方法类似于C ++和Java中的构造函数。构造函数用于初始化对象的状态。与方法一样, 构造函数也包含在创建对象时执行的语句(即指令)的集合。实例化类的对象后立即运行。该方法对于你要对对象进行的初始化非常有用。
# 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
类和实例变量
实例变量用于每个实例唯一的数据, 类变量用于该类的所有实例共享的属性和方法。实例变量是指其值在构造函数或方法中使用自而类变量是其值在类中分配的变量。
使用构造函数定义实例变量。
# Python 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
使用常规方法定义实例变量。
# Python 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 DS课程。