Python中的类
类的定义
在Python中,类
是一种用户定义的复杂数据类型
类
提供了一种组织代码和数据的方式,用来创建现实世界对象的蓝图
一个类,是由成员变量(属性)和函数(类的方法)组成的
|------成员属性
类------|
|------类的方法
-
定义格式
class Teacher: #-----类名 def __init__(self) -> None: #-----初始化函数(内置函数) self.name = "susan" self.subject = "math" self.age = 33 self.height = 164 self.weight = 105
类的属性
即一些变量
class Teacher: #-----类名
def __init__(self) -> None: #-----初始化函数(内置函数)
self.name = "susan"
self.subject = "math"
self.age = 33
self.height = 164
self.weight = 105 #-----变量
self关键字
什么是self
?
在Python中,self
是约定俗成的标识符,用于表示类的实例。它实际上可以是任何标识符,但强烈建议使用self
以提高代码的可读性和可维护性。self
通常作为实例方法的第一个参数出现,它用于引用实例本身。
在定义一个类时,通常会创建各种方法,用于对类的属性进行操作或执行其他任务。这些方法可以访问类的属性和其他方法,而self
则提供了对实例属性和方法的访问权限。
为什么需要self
?
在Python中,self
的主要作用是允许类的实例方法访问类的属性和其他方法。没有self
,实例方法无法知道它们所属的对象,也无法访问该对象的属性和方法。
下面是一个示例,演示了为什么需要self
:
class Person:
def set_name(self, name):
self.name = name
def get_name(self):
return self.name
# 创建两个Person实例
person1 = Person()
person2 = Person()
person1.set_name("Alice")
person2.set_name("Bob")
print(person1.get_name()) # 输出:Alice
print(person2.get_name()) # 输出:Bob
在上述示例中,self
允许set_name
和get_name
方法访问每个Person
实例的name
属性。如果没有self
,这些方法将无法区分不同的实例。
使用self
的实例方法
实例方法是类中的方法,它们可以访问和操作实例的属性。要创建实例方法,需要在方法的参数列表中包含self
参数。self
参数通常作为方法的第一个参数出现,尽管可以使用任何有效的标识符。
以下是一个示例,演示如何定义和使用实例方法:
class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breed
def bark(self):
return f"{self.name}({self.breed})汪汪叫"
# 创建一个Dog实例
my_dog = Dog("Buddy", "Golden Retriever")
# 调用实例方法
bark_sound = my_dog.bark()
print(bark_sound) # 输出:Buddy(Golden Retriever)汪汪叫
在上述示例中,__init__
方法是一个特殊的实例方法,用于初始化实例的属性。bark
方法是另一个实例方法,使用self
来访问实例的name
和breed
属性。
总之,与Java中的this.比较相似
类的方法
包含在类中的一些函数或者说是方法
class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breed
def bark(self):
return f"{self.name}({self.breed})汪汪叫"
对象
对象是类的实例化
-
object_name = class_name()
,注意要有括号 -
class Teacher: def __init__(self): self.name = "susan" self.subject = "math" self.age = 33 self.height = 164 self.weight = 105 def print_name(self): print(self.name) def print_age(self): print(self.age) teacher_zhang = Teacher() teacher_zhang.__init__() teacher_zhang.print_age() teacher_zhang.print_name()
-
class Teacher: def __init__(self,name): #---------相当于构造方法 self.name = name self.age = 33 def print_name(self): print(self.name) def print_age(self): print(self.age) teacher_cui = Teacher("cuiweiyang") teacher_cui.print_name()