在 Python 类中定义的函数有许多变量,以 self
开头的是实例变量,以类名开头的是类变量,还有一些其他变量需要注意。下面对 Python 类中函数的变量进行详细讲解:
self
:它是实例方法的一个参数,指向当前调用该方法的实例。在方法内可以通过self
访问实例的属性和其他方法。示例如下:
“`python
class Person:
def init(self, name, age):
self.name = name
self.age = age
def say_hello(self):
print(f"Hello, my name is {self.name} and I am {self.age} years old.")
p = Person(‘Tom’, 20)
p.say_hello() # 输出:Hello, my name is Tom and I am 20 years old.
“`
cls
:它是类方法的一个参数,指向当前调用该方法的类。在方法内可以通过cls
访问类的属性和其他方法。示例如下:
“`python
class Person:
count = 0
def __init__(self, name, age):
self.name = name
self.age = age
Person.count += 1
@classmethod
def get_count(cls):
print(f"There are {cls.count} person(s) in total.")
p1 = Person(‘Tom’, 20)
p2 = Person(‘Jerry’, 21)
Person.get_count() # 输出:There are 2 person(s) in total.
“`
@property
和@property.setter
:它们是用来定义属性的装饰器,可以把一个方法“伪装”成一个属性。@property
用来访问属性,@property.setter
用来设置属性。示例如下:
“`python
class Person:
def init(self, name):
self._name = name
@property
def name(self):
print(f"Getting name: {self._name}")
return self._name
@name.setter
def name(self, value):
print(f"Setting name: {value}")
self._name = value
p = Person(‘Tom’)
p.name # 输出:Getting name: Tom
p.name = ‘Jerry’ # 输出:Setting name: Jerry
p.name # 输出:Getting name: Jerry
“`
*args
和**kwargs
:它们是用来接收任意数量的参数的。*args
用来接收任意数量的位置参数,**kwargs
用来接收任意数量的关键字参数。示例如下:
“`python
class Calculator:
def add(self, *args):
result = 0
for arg in args:
result += arg
return result
def multiply(self, **kwargs):
result = 1
for key in kwargs:
result *= kwargs[key]
return result
c = Calculator()
print(c.add(1, 2, 3, 4, 5)) # 输出:15
print(c.multiply(a=1, b=2, c=3, d=4, e=5)) # 输出:120
“`
以上就是 Python 类中函数变量的完整攻略。在实际开发中,需要根据具体的需求选择合适的变量类型和使用方式。