recherche

Maison  >  Questions et réponses  >  le corps du texte

Les sous-classes Python peuvent-elles remplacer les fonctions globales ?

Par exemple, il y a une classe A dans a.py

A possède plusieurs méthodes, qui appellent toutes une fonction globale hello() (définie en dehors de la classe, mais aussi dans a.py).

Supposons que je veuille écrire une sous-classe B, mais que je veuille que B appelle un hello() nouvellement défini. Est-ce possible ?

.
# a.py
# hello() 不在类的声明里
def hello():
    print "Hello"
    
class A(object):
    # 调用全局函数 hello()
    def greeting(self):
        hello()
# b.py
class B(A):
    # 想要重载hello()从而使greeting 的输出改变

Ne modifiez pas le message d'accueil, mais souhaitez un résultat comme celui-ci :

b = B()
b.greeting()
'Salut'

曾经蜡笔没有小新曾经蜡笔没有小新2757 Il y a quelques jours513

répondre à tous(2)je répondrai

  • 大家讲道理

    大家讲道理2017-05-18 10:48:14

    Il semble que vous deviez utiliser l'héritage.

    répondre
    0
  • 漂亮男人

    漂亮男人2017-05-18 10:48:14

    Merci pour l'invitation.

    Désolé, je ne comprends pas encore complètement vos besoins, je vais donc d'abord répondre théoriquement. Si la personne qui pose la question peut ajouter quelque chose, je peux encore améliorer ma réponse et donner le code qui peut résoudre le problème.

    En Python, si une méthode peut être logiquement assemblée avec une classe. Ensuite, vous pouvez utiliser cette méthode comme méthode statique de la classe, c'est-à-dire la décorer avec @staticmethod. @staticmethod装饰一下。

    如果将hello()作为类A和类B的静态方法,那么在各自的类中用cls.hello()就可以调用各自版本的hello了。

    根据题主的描述,在类B中含有hello(),那么我想将其作为静态方法是没有问题的。如果有其他模块想要调用a.py中的hello(),可以直接使用A.hello()

    Si hello() est utilisé comme méthode statique de classe A et de classe B, alors utilisez cls.hello() dans les classes respectives pour appeler les classes respectives versions de bonjour.

    Selon la description du sujet, la classe B contient hello(), donc je pense qu'il n'y a aucun problème à l'utiliser comme méthode statique. S'il existe d'autres modules qui souhaitent appeler hello() dans a.py, ils peuvent utiliser directement A.hello(). #🎜🎜# #🎜🎜# Veuillez me corriger si je comprends mal les exigences de la question. #🎜🎜#

    répondre
    0
  • Annulerrépondre