Python中类的属性

86 阅读5分钟

类是 Python 语言的一个基本部分。它们提供了一种将相关功能组合在一起的方法,并且在面向对象编程中起着核心作用。在这篇文章中,我们将看一下Python中类的属性。

  1. 继承:将属性从父类引入子类。
  2. 多态性:从一种形式创建多种形式。
  3. 抽象:显示必要的数据,隐藏不必要的数据。
  4. 封装:保护类的信息。

关于类的更多信息

  1. 类只是一个接口,在其内部持有变量和函数。它们分别被称为数据成员和成员函数
  2. 要访问它们,我们需要创建一个该类的对象。该对象是一个实例,我们可以通过它来编辑其属性。
  3. 为了给类本身提供一些参数,有一个特殊的方法叫做构造函数当我们形成对象时,该方法会在运行时调用。
  4. 我们可以只使用对象 来访问所有的数据成员和成员函数。

在Python中创建类

Python 中的类是用关键字 class 来创建的,后面是类的名称。类的属性定义在类名之后,它们被该类的所有实例所共享。单个实例的属性定义在类的属性之后,它们对每个实例都是唯一的。方法的定义也被放在类定义之后。方法是与类相关的函数,它们被用来处理或操作存储在类的实例中的数据。

现在让我们来定义一个类,以便更好地理解这一点。

代码

class student:
    def __init__(self, name, std, roll_no):
        self.nm = name
        self.std = std
        self.rl_no = roll_no
        
    def getData(self):
        print("Student name: ", self.nm)
        print("Standard: ", self.std)
        print("Roll number: ", self.rl_no)
        
    def setData(self, name, std, roll_no):
        self.nm = name
        self.std = std
        self.rl_no = roll_no
        
    
stud = student("Om", "4th", 9)
stud.getData()
print() # to print a new line in between
stud_1 = student("Hari", "5th", 14) 
stud_1.getData()

输出

Student name:  Om
Standard:  4th
Roll number:  9

Student name:  Hari
Standard:  5th
Roll number:  14

解释

  1. 使用class关键字来声明一个类。然后在它后面加上class_name,并给出一个冒号来开始数据插入。
  2. 然后调用 "__init__() " 方法。这是 Python 中任何类的构造方法。
  3. 我们创建一个学生 类,然后给它赋予属性,如姓名、标准、和卷号
  4. 如果我们不使用self关键字,类的声明就没有用
  5. 类里面有两个方法。
    1. 第一个 "getData() "检索了实例属性。
    2. 第二个 "setData() "可以改变这些属性的值。
  6. 现在我们为这个类创建两个对象。第一个对象有不同的参数。它们是关于两个学生的名字和信息。
  7. 这些被称为 实例变量或实例属性, 它们对每个对象都是唯一的。

访问类的变量 实例属性

你可以通过使用点运算符(.)来访问一个类的属性和方法。例如,如果你想访问类myClass的属性x,你可以使用表达式myClass.x。如果你想调用类myClass的方法myMethod,你可以使用表达式myClass.myMethod()。

让我们为这个演示在我们的类中定义一些实例属性。

访问实例属性的语法

object = class_name(parameter1 = value_!, parameter2 = value_2, .., parameter_N = value_N)
object.parameter_1
object.parameter_2
.
.
object.parameter_N

代码

class Rectangle:
    def __init__(self,  length, width):
        self.side_1 = length
        self.side_2 = width
        
    def area(self):
        a = self.side_1*self.side_2 
        print("Area of the rectangle is: ", a)
        
rect = Rectangle(45.0, 56.98)

# printing the type of object
print(type(rect)) 

 # accessing the values through object
print(rect.side_1)
print(rect.side_2)

输出

<class '__main__.Rectangle'>
45.0
56.98

所以,通过这种方式,我们可以访问它们。

访问类方法和其他实例属性

语法

class_name.variable_1
class_name.variable_2
.
.
class_name.variable_N

这个概念的简单变化是,我们所说的类属性是指类变量。这些变量只能用class_name 来访问。它们也被称为静态变量。内存不会对其进行清理,而是在每次成功运行代码后。它更新 新的数值,保留以前的数值。

例如,我们使用同一个学生班级并为其创建班级属性

class student:
    school = "Universal Public School"
    batch = "2020-2021"

    def __init__(self, name, std, roll_no):
        self.nm = name
        self.std = std
        self.rl_no = roll_no
        
    def getData(self):
        print("Student name: ", self.nm)
        print("Standard: ", self.std)
        print("Roll number: ", self.rl_no)
        
    def setData(self, name, std, roll_no):
        self.nm = name
        self.std = std
        self.rl_no = roll_no
        
 
print("The school name is: ", student.school) 
print("The batch year is: ", student.batch, "\n")
   
stud = student("Om", "4th", 9)
stud.getData()
print() # to print a new line in between
stud_1 = student("Hari", "5th", 14) 
stud_1.getData()

输出

The school name is:  Universal Public School
The batch year is:  2020-2021

Student name:  Om
Standard:  4th
Roll number:  9

Student name:  Hari
Standard:  5th
Roll number:  14

解释

  1. 这个学生类在开始时只包含两个新的东西。它包含学校批次变量。
  2. 接下来的代码与第一个代码相同。其他的只是getter() and setter() 方法。
  3. 现在在第21和第22行代码中,我们正在调用这些变量。
  4. 注意区别:
    1. 我们不是创建一个对象,而是只用类名来调用它们
    2. 然后使用点运算符 ". " 来进行访问。
  5. 另外,请注意,我们可以在运行时使用等价的"="运算符来改变它们的值,同时也可以调用它们。

例子(在运行时)

class Employee:
    
    # class attributes
    COMPANY = ""
    BRANCH = ""

    def __init__(self, name, designation, ID):
        self.name = name
        self.designation = designation
        self.id = ID
        
    def getData(self):
        print(self.name)
        print(self.designation)
        print(self.id)
        print()
        
    def setData(self, name, desig, ID):
        self.name = name
        self.designation = desig
        self.id = ID

def main():
    Employee.COMPANY = input("Enter the company name: ")
    Employee.BRANCH = input("Enter the branch: ")
    print()
    
    print("...The employee details are...")
    print("The company name is: ", Employee.COMPANY)
    print("The company branch is at: ", Employee.BRANCH)
    
    emp_1 = Employee("Varun", "Tirpathi", 1001)
    emp_2 = Employee("Dhanush", "Reddy", 1002)
    emp_3 = Employee("Neha", "Singh", 1003)
    
    emp_1.getData()
    emp_2.getData()
    emp_3.getData()
    
    
    
main()

输出

Enter the company name: Microsoft
Enter the branch: Bengaluru

...The employee details are...      
The company name is:  Microsoft     
The company branch is at:  Bengaluru
Varun
Tirpathi
1001

Dhanush
Reddy
1002

Neha
Singh
1003

解释

  1. 这里我们有一个简单的雇员类。构造函数包含参数,如雇员的姓名、职务和ID。
  2. 接下来的方法是getData() and setData(). 通过这个名字,我们可以了解到第一个方法是用来检索数据的,接下来是用来编辑数据的。
  3. 这个类有两个属性:
    1. 公司。
    2. 支部。
  4. main() ,该函数接受这两个类属性的输入。
  5. 在最后六行中,我们有三个雇员类的对象。
  6. 然后为了检索数据,我们调用getData()方法。

结束语

所以,通过这种方式,我们可以说,类的属性也被称为类变量。我希望这对学习与Python中的OOP和类有关的新概念会有帮助和乐趣。更多的新主题将陆续出现。在那之前,请继续学习和进步。