Python中类(class)与函数(function)的区别

分享知识  传递快乐

 

在 Python 中一直以来都以为函数(function)和方法(method)是一个东西,但后来发现两者是不一样的,那么两者之间有什么区别呢?先看段代码:

代码1:

def fun():
    pass

print(fun)

结果如下:

<function fun at 0x000000000248A820>

代码2:

class Demo():
    
    def fun1(self):
        pass
    
    @classmethod
    def fun2(cls):
        pass
    
    @staticmethod
    def fun3(self):
        pass


demo = Demo()
print(demo)
print(demo.fun1)
print(demo.fun2)
print(demo.fun3)

结果如下:

<__main__.Demo object at 0x00000000006BE3D0>
<bound method Demo.fun1 of <__main__.Demo object at 0x00000000006BE3D0>>
<bound method Demo.fun2 of <class '__main__.Demo'>>
<function Demo.fun3 at 0x0000000002631E50>

由此得出:

  • 在class内定义的普通方法(fun1),因为它是要面向实例化对象的一个实例方法。
  • 在class内定义的类方法(fun2),它第一个参数必须是cls,并与class本身是绑定关系,它也属于方法,但不属于实例方法,可以被实例对象调用。
  • 在class内定义的静态方法(fun3),它与任何对象都没有联系,等同于是在class外定义的function,它属于函数。

还可以理解为与类或实例有绑定关系的 function 称之为方法(method),否则叫函数。

 

类(class)与函数(function)的区别:

类(class):类是面向你对象的,class可以保存一此属性的状态,同时也起到模板的作用,把一些通用的东西写进类定义中,也就是在'__init__'中。class有点像是将多个函数进行功能性封装

函数:函数更像是面向过程编程,更易理解,但是当系统较大时,重复性就会增多。

 

类(class)与函数(function)的优劣势:

类(class)函数(function)
方便复用不宜复用,容易出错
方便扩展升级、扩展,都十分复杂
方便维护不便维护

 

 

 

 

 

 

——————————
如有不足请留言指正
相互学习,共同进步

  • 28
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
### 回答1: 在Pythonclass中,可以通过以下方式调用函数: 1. 在中定义一个函数,并在其他函数中调用它。 例如: ```python class MyClass: def my_function(self): print("Hello, World!") def another_function(self): self.my_function() ``` 在上面的例子中,`my_function()`是一个中定义的函数,`another_function()`中调用了`my_function()`。 2. 在中定义一个静态方法方法,并在其他函数中调用它。 例如: ```python class MyClass: @staticmethod def my_static_function(): print("Hello, World!") @classmethod def my_class_function(cls): print("Hello, World!") def another_function(self): MyClass.my_static_function() MyClass.my_class_function() ``` 在上面的例子中,`my_static_function()`和`my_class_function()`都是中定义的静态方法方法,`another_function()`中通过名调用了这两个方法。 3. 在中定义一个实例方法,并在其他函数中通过实例调用它。 例如: ```python class MyClass: def my_function(self): print("Hello, World!") def another_function(self): self.my_function() my_instance = MyClass() my_instance.another_function() ``` 在上面的例子中,`my_function()`是一个中定义的实例方法,`another_function()`中通过`self`关键字调用了它。然后创建了一个`MyClass`的实例`my_instance`,并通过实例调用了`another_function()`,从而间接调用了`my_function()`。 ### 回答2: Python中的class是一种面向对象的编程方式,class里定义了属性和方法方法则是一系列指令的集合,用于执行某种特定的任务。在class中调用函数,可以按以下两种方式进行: 一、在class方法定义时调用函数class方法定义的过程中,似于函数定义方式,可以在方法内部调用函数。调用方式与函数调用似,将函数名作为方法内部指令即可。 例如,定义一个Animal,其中有一个方法speak,需要调用一个函数print_message输出信息,可以这样实现: ``` def print_message(message): #定义函数print_message print(message) class Animal: def speak(self): #定义方法speak print_message("I can speak!") #调用函数print_message ``` 二、在中定义函数并调用 似于定义函数,也可以在class中定义函数函数的作用范围只在当前class内有效,可以通过名或实例名调用。调用方式与函数调用似,将函数名作为或实例内部指令即可。 例如,继续上面的例子,在Animal中定义函数print_name,用于输出动物名称: ``` class Animal: def __init__(self,name): self.name = name def speak(self): print(self.print_name()) #调用print_name函数 def print_name(self): #定义print_name函数 return "My name is " + self.name ``` 在speak方法中调用了print_name函数,并返回输出语句。可以在实例化后,通过实例名调用: ``` dog = Animal("dog") dog.speak() #输出 "My name is dog" ``` 通过以上两种方式,在class中调用函数是很简单的,只要注意函数定义和调用的方式即可。这种面向对象的编程方式,可以使代码内部更加结构化,方便团队合作和维护。 ### 回答3: 在Python中,我们可以通过定义中的函数来实现面向对象编程。在中,我们可以调用函数来进行各种操作。以下是Python中调用函数的一些方法和注意事项。 1. 中的函数调用变量和函数:在中定义的函数可以调用变量和函数。例如,我们可以在一个名为my_class中定义一个函数,该函数调用my_class变量: ``` class my_class: count = 0 def print_count(self): print ("Count is:", my_class.count) a = my_class() a.print_count() # Output: Count is: 0 ``` 2. 对象调用函数:通过创建的对象可以调用中的函数。例如,我们可以定义一个名为my_class,创建一个名为a的对象,并调用该对象的一个成员函数: ``` class my_class: def __init__(self): self.name = "Python" def greeting(self): print ("Hello, I'm", self.name) a = my_class() a.greeting() # Output: Hello, I'm Python ``` 3. 继承调用函数:在子中可以调用父函数,以便复用已经存在的代码。例如,我们可以定义一个名为parent的,它有一个名为method1的函数,然后定义一个名为child的子,它重载了方法1并调用了父方法1: ``` class parent: def method1(self): print ("Parent Method1") class child(parent): def method1(self): parent.method1(self) print ("Child Method1") a = child() a.method1() # Output: Parent Method1, Child Method1 ``` 4. 重载调用函数:在中,我们可以重载函数,一旦我们定义了重载函数,就可以按照我们的需求调用。例如,我们可以定义一个包含多个函数,其中包含重载函数“__str__”,该函数控制打印对象时输出的字符串: ``` class my_class: def __init__(self, x): self.x = x def __str__(self): return "My class contains " + str(self.x) a = my_class(5) print (a) # Output: My class contains 5 ``` 总之,Python中类函数调用提供了很多灵活性和重用的机会。无论我们需要调用哪种型的函数,我们都可以通过定义和调用函数来构建我们需要的功能。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旷野历程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值