Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 970995
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 16, 20262026-05-16T02:53:31+00:00 2026-05-16T02:53:31+00:00

I have something like that in my python code class A: __mess = Yeap!

  • 0

I have something like that in my python code

class A:
  __mess = "Yeap!"
  def doSome(self):
    self.FN()
  def FN(self):
    pass

def myFN(self):
  print self.__mess

b = A()
b.FN = myFN
b.doSome()

But this doesn’t work. Where am I wrong?

python 2.6.5

upd: I want to redefine method (FN) only for one exemplar (b).

upd2:

import new
class A:
  __mess = "Yeap!"
  def doSome(self):
    self.FN()
  def FN(self):
    pass

def myFN(self):
  print self.__mess

b = A()
b.FN = new.instancemethod(myFN, b, A)
b.doSome()

Doesn’t work too.

Traceback (most recent call last):
File “”, line 1, in
File “”, line 4, in doSome
File “”, line 2, in myFN
AttributeError: A instance has no
attribute ‘__mess’

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-16T02:53:31+00:00Added an answer on May 16, 2026 at 2:53 am

    myLoopFN is a function, not an instance method. Do

    import new
    b.loopFN = new.instancemethod( myLoopFN, b, A )
    

    The problem is that Python treats instance methods very slightly differently to regular functions: they get the instance upon which they are run as the default first argument. If you define a method inside a class definition it automagically becomes an instance method, so that when you instantiate the class it gets passed the instance. However, when you define myLoopFN you do it outside the class definition, so that it is an ordinary function instead of an instance method. You fix this by explicitly declaring it as an instance method.

    …

    BUT

    This is icky because it’s not something you should do; changing instance methods at runtime will lead to problems. You’ll never be sure whether your A is an original A or a modified one, and you won’t be able to debug it because you can’t tell whether you’ve changed loopFN or not. This will give you the kind of bugs that Nyarlathotep himself would be proud of.

    The right way to do this is to subclass A and override the method, so that you can distinguish between the different classes.

    class myA( A ):
        def loopFN(self):
            #put modified function here
    

    This way, you can instantiate the modified class and be certain of its methods.

    Edit

    You are using a double-underscore variable name, __mess. You (almost certainly) don’t want to do this. For some reason known only to our Benevolent Dictator for Life and a select few others, Python automatically mangles these __ names to _<class-name>__, to serve as a sort-of faux private variable. This is horrible, and besides there’s no reason to call it __mess instead of (the much nicer) mess.

    If you absolutely must call it __mess, you can refer to it as follows:

    def myFN(self):
        print( self._A__mess )
    

    (mutatis mutandis when you change the name of A). This is nasty and unPythonic.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 509k
  • Answers 509k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer Can you do it on your data source before you… May 16, 2026 at 4:42 pm
  • Editorial Team
    Editorial Team added an answer pclose is missing for your popen. popen is only POSIX,… May 16, 2026 at 4:42 pm
  • Editorial Team
    Editorial Team added an answer You cannot initiate an AJAX request to a domain other… May 16, 2026 at 4:42 pm

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Related Questions

I have a programming experience with statically typed languages. Now writing code in Python
I have a library which creates objects (instances of class A) and pass them
Say I have something like the following: dest = \n.join( [line for line in
I have been trying to use an ajax-style file upload component (like the dojox
i have an application class inherited from QtGui.QDialog. I have to reload show-function but
I'd like to extract the text from an HTML file using Python. I want
I am looking for a financial library for Python that will enable me to
I've never been a huge Python fan. I learned it for a course where
I'm a Java rookie and I was wondering, if I have the following typical
I am new to Python. I am writing an application using wxPython and I

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.