【Python】Python 中类的定义以及 self 是谁?

news/2025/1/12 1:09:37/

文章目录

  • 一、类的定义
  • 二、更复杂的属性和方法
    • 2.1 实例属性和实例方法
    • 2.2 类属性和类方法
    • 2.3 继承
  • 三、Python里面的self,是谁?

一、类的定义

在Python中,你可以使用关键字 class 来定义一个类。类提供了一种创建对象的蓝图,它定义了对象的属性和方法。以下是一个简单的类定义的示例:

class MyClass:# 属性定义attribute1 = "Value 1"attribute2 = 2# 方法定义def method1(self):# 方法体print("This is method 1")def method2(self, parameter):print("This is method 2 with parameter:", parameter)

在上面的示例中,MyClass 是一个类的名称。它包含了两个属性 attribute1 和 attribute2,以及两个方法 method1 和 method2。注意,所有的方法的第一个参数都是 self,它表示类的实例本身。

要使用类创建对象(实例),你可以使用类名后跟一对括号,就像调用函数一样:

my_object = MyClass()

通过这个语句,你创建了一个名为 my_object 的对象,该对象是 MyClass 类的一个实例。

你可以通过访问对象的属性和调用方法来操作对象:

print(my_object.attribute1)  # 输出: Value 1
my_object.method1()  # 输出: This is method 1my_object.attribute2 = 3  # 修改属性的值
my_object.method2("Hello")  # 输出: This is method 2 with parameter: Hello

在类定义中,你还可以定义特殊的方法,例如 __init__ 方法用于对象的初始化,__str__ 方法用于对象的字符串表示等。

这是一个简单的类定义的示例,实际上,类可以具有更复杂的属性和方法,并且可以继承其他类,实现面向对象编程的各种概念和特性。

二、更复杂的属性和方法

当涉及到更复杂的属性和方法时,类可以包含各种不同类型的属性和方法,以满足特定的需求。以下是一些示例:

2.1 实例属性和实例方法

class Circle:def __init__(self, radius):self.radius = radiusdef calculate_area(self):return 3.14 * self.radius**2def calculate_circumference(self):return 2 * 3.14 * self.radiusmy_circle = Circle(5)
print(my_circle.calculate_area())  # 输出: 78.5
print(my_circle.calculate_circumference())  # 输出: 31.4

在这个例子中,Circle 类具有 radius 属性,以及计算圆的面积和周长的方法。calculate_area 和 calculate_circumference 方法都依赖于实例的 radius 属性进行计算。

2.2 类属性和类方法

class BankAccount:interest_rate = 0.05def __init__(self, balance):self.balance = balance@classmethoddef set_interest_rate(cls, rate):cls.interest_rate = rate@staticmethoddef calculate_interest(balance):return balance * BankAccount.interest_ratemy_account = BankAccount(1000)
print(my_account.calculate_interest(my_account.balance))  # 输出: 50.0BankAccount.set_interest_rate(0.07)
print(my_account.calculate_interest(my_account.balance))  # 输出: 70.0

在这个例子中,BankAccount 类具有一个类属性 interest_rate,表示银行账户的利率。类方法 set_interest_rate 用于设置利率,并且可以通过类名调用。静态方法 calculate_interest 根据给定的余额和利率计算利息。

2.3 继承

class Animal:def __init__(self, name):self.name = namedef make_sound(self):passclass Dog(Animal):def make_sound(self):return "Woof!"class Cat(Animal):def make_sound(self):return "Meow!"my_dog = Dog("Buddy")
my_cat = Cat("Whiskers")print(my_dog.make_sound())  # 输出: Woof!
print(my_cat.make_sound())  # 输出: Meow!

在这个例子中,Animal 是一个基类,它定义了 name 属性和 make_sound 方法。Dog 和 Cat 类继承了 Animal 类,并重写了 make_sound 方法以适应不同的动物声音。

这些示例只是演示了一些复杂属性和方法的用法,实际上,类的设计可以更加复杂和灵活,以适应各种需求。

三、Python里面的self,是谁?

在Python中,self 是一个约定俗成的名称,用于表示类的实例(对象)本身。当你创建一个类的实例时,这个实例会被赋给 self 参数,以便在类的方法中引用对象的属性和方法。

具体来说,当你调用类的方法时,Python会自动将该方法所属的实例作为第一个参数传递给 self。通过这种方式,你可以在方法中访问实例的属性和调用其他方法。

例如,考虑以下的代码:

class Person:def __init__(self, name, age):self.name = nameself.age = agedef say_hello(self):print("Hello, my name is", self.name)print("I am", self.age, "years old")person = Person("Alice", 25)
person.say_hello()

在这个例子中,当你调用 person.say_hello() 时,Python会自动将 person 实例作为 self 参数传递给 say_hello 方法。这样,self 就代表着 person 实例本身,你可以通过 self 访问实例的属性(如 self.name 和 self.age)并进行相应的操作。

总结来说,self 就是指向类的实例本身的引用,在类的方法中使用它可以访问实例的属性和方法。


http://www.ppmy.cn/news/291565.html

相关文章

什么是个性化推荐

个性化推荐是指个人信息控制者利用用户数据和算法推送新闻信息、商业广告等向个人信息主体提供的一种。个人信息控制者不得以提供个性化推荐为由,误导个人信息主体同意其收集个人信息。 个人信息控制者在提供个性化推荐时,应当以明显方式标明“个性化推荐…

个性化linux

密码:123456 转变成中文: 方法一: 在terminal下:输入:(也可以在代码前加 sudo来执行root目录下的操作) su root 转到 root根目录,输入: locale #查看当前安装包 不支…

要个性,不跟随

** 课后分析,一个原因,就是在题目说明中,存在一定的瑕疵,比如下面的题目中,就在描述信号频谱的表达式中存在着两种形式混合使用,X(omiga),X(jomiga),这显示不合适。** None** 这一点,很…

Yilia个性设置

这段时间一直在构建自己的个人博客,如想参观,请移步[我的博客](https://lijinhongpassion.github.io),以下内容是我在yilia主题的基础上修改的样式,这里分享出来供大家参考。 ####1、yilia更改头部图片 ​ 在yilia的根目录下&…

个性定制网站

最近互联网涌现了许多关于个性定制的网站,这些网站基本都不约而同地拿Tshirt做为了入口,记得以前自己曾经推荐过一个 女士服装DIY展示的网站,引起了很多朋友的共鸣和兴趣,这个也是拿服饰作为入口,很有趣,在…

从古至今数据安全的守护者:哈希算法和加密方法的数据安全进化之旅

1、哈希算法进化史 在当今的数字化世界中,数据的安全性和完整性是至关重要的。哈希算法作为一种核心的密码学工具,用于生成数据的唯一标识和验证数据的完整性。然而,随着技术的进步和安全威胁的不断演化,早期的哈希算法逐渐暴露出…

个性,你的产品需要的是个性

Seth Godin 说我们都成了时尚产业,Mona Hu 说你要吧让他们哭、要吧让他们笑。这背后的原理其实很简单,因为我处在一个新的 P2P (person-to-person) 时代,社群媒体、口语传播、病毒营销的力量远大过任何形式广告的时代,所以重点不再…

FORM个性化

Form 个性化控制讲义 Kenver(译) 纲要: 概述 如何使用 Form 个性化控制 转移个性化设计至其他环境 1. 概述 Form 个性化允许您修改基于Form 基础页面的事件,包括:修改物件的属性、执行内建函数、产生提示信息和添加标签入口。 对于每个功能…