1 类的概念
类是一种创建对象的蓝图或模板。它定义了一组属性(变量)和方法(函数),这些属性和方法描述了该类的对象应该具有哪些特征和行为。
2 定义一个类
在Python中,你可以使用class
关键字来定义一个类。例如,定义一个名为Person
的简单类:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def display(self):
print(f"Name: {self.name}, Age: {self.age}")
__init__
方法是一个特殊的方法,称为构造器,用于初始化类的新实例。self
参数代表类的实例本身,并且是类任何方法的第一个参数。- 类方法需要通过
self
来访问类属性。
3 创建对象
创建一个类的实例(即对象)非常简单。只需调用类名后跟一对括号即可:
person1 = Person("Alice", 25)
person2 = Person("Bob", 30)
4 访问属性和方法
可以通过点符号访问对象的属性和方法:
person1.display()
# 输出: Name: Alice, Age: 25
print(f"Name: {person2.name}, Age: {person2.age}")
# 输出: Name: Bob, Age: 30
Python 还有一个很牛逼的操作就是可以直接给对象赋值类里不存在的属性,比如我给 person2 的一个不存在的属性 gender 赋值:
<a href="https://www.lofter.com/shareblog/seduoduosecaidapei/" target="_blank">QuY5</a>
<a href="https://www.lofter.com/favblog/seduoduosecaidapei/" target="_blank">PiGw</a>
<a href="https://seduoduosecaidapei.lofter.com/" target="_blank">32oW</a>
<a href="https://www.lofter.com/front/blog/collection/share?collectionId=21496484&incantation=hjjgUsqrgLrw/" target="_blank">4IjQ</a>
<a href="https://www.lofter.com/front/blog/collection/share?collectionId=21505351&incantation=hjR7nMCjzsuk/" target="_blank">11LY</a>
<a href="https://www.lofter.com/front/blog/collection/share?collectionId=21494574&incantation=hj6O4ChueUp2/" target="_blank">nil9</a>
<a href="https://www.lofter.com/front/blog/collection/share?collectionId=21489938&incantation=hj9LxUFrjUXX/" target="_blank">04Wd</a>
<a href="https://www.lofter.com/front/blog/collection/share?collectionId=21493644&incantation=hj7QDf2RaQ4L/" target="_blank">IIov</a>
<a href="https://www.lofter.com/front/blog/collection/share?collectionId=21490884&incantation=hj0NeCtgZBh2/" target="_blank">7GGO</a>
<a href="https://www.lofter.com/front/blog/collection/share?collectionId=21499481&incantation=hjUHZ74dOJXH/" target="_blank">QN1v</a>
<a href="https://www.lofter.com/front/blog/collection/share?collectionId=21496493&incantation=hjsOkAerAnhl/" target="_blank">tv8Z</a>
<a href="https://www.lofter.com/front/blog/collection/share?collectionId=21489944&incantation=hj9Ql6rbpnjo/" target="_blank">FMU4</a>
<a href="https://www.lofter.com/front/blog/collection/share?collectionId=21492746&incantation=hjlwIsDV44ET/" target="_blank">cKBy</a>
<a href="https://www.lofter.com/front/blog/collection/share?collectionId=21496484&incantation=hjjgUsqrgLrw" target="_blank">4CW4</a>
<a href="https://www.lofter.com/front/blog/collection/share?collectionId=21505351&incantation=hjR7nMCjzsuk" target="_blank">OR8x</a>
<a href="https://www.lofter.com/front/blog/collection/share?collectionId=21494574&incantation=hj6O4ChueUp2" target="_blank">0c31</a>
<a href="https://www.lofter.com/front/blog/collection/share?collectionId=21489938&incantation=hj9LxUFrjUXX" target="_blank">eCvD</a>
<a href="https://www.lofter.com/front/blog/collection/share?collectionId=21493644&incantation=hj7QDf2RaQ4L" target="_blank">52O6</a>
<a href="https://www.lofter.com/front/blog/collection/share?collectionId=21490884&incantation=hj0NeCtgZBh2" target="_blank">SWGn</a>
<a href="https://www.lofter.com/front/blog/collection/share?collectionId=21499481&incantation=hjUHZ74dOJXH" target="_blank">Utmh</a>
<a href="https://www.lofter.com/front/blog/collection/share?collectionId=21496493&incantation=hjsOkAerAnhl" target="_blank">st35</a>
<a href="https://www.lofter.com/front/blog/collection/share?collectionId=21489944&incantation=hj9Ql6rbpnjo" target="_blank">fItp</a>
<a href="https://www.lofter.com/front/blog/collection/share?collectionId=21492746&incantation=hjlwIsDV44ET" target="_blank">p19f</a>
person2.gender = "男"
print(getattr(person2,"gender"))
# 输出:男
5 和Java类的对比
5.1 类和文件
在 Python 中,一个文件可以包含多个类。我们新建一个 example.py 文件,里面创建两个类,并在 main.py 文件中使用它们。
example.py
class MyClass1:
def __init__(self, value):
self.value = value
def display(self):
print("MyClass1 Value is:", self.value)
class MyClass2:
def __init__(self, value):
self.value = value
def display(self):
print("MyClass2 Value is:", self.value)
你可以在另一个文件中导入并使用这些类:
main.py
from example import MyClass1, MyClass2
# 创建MyClass1的实例
instance1 = MyClass1("AAA")
instance1.display()
# 输出:MyClass1 Value is: AAA
# 创建MyClass2的实例
instance2 = MyClass2("BBB")
instance2.display()
# 输出:MyClass2 Value is: BBB
Java 一个文件也可以有多个类,但只能有一个 public 的类,并且 public 的类名必须与文件名相一致。这是编译器的基本要求。虽然可以有非 public 的类,但是在外部无法使用,只能在本文件的类里使用。
5.2 构造函数
Python 构造函数第一个参数是 self 代表类的实例本身,并且 self 是类任何方法的第一个参数。构造函数里用 self.xx = xx 赋值过的参数就是类的属性,不用像 Java 一样先声明属性。