账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    python 的类里是否有一个类似于__str__的数值类型的方法?
    37
    0

    请问python 的类里是否有一个类似于__str__的数值类型的方法,可以通过实例名称直接得到一个值,从而直接进行运算,比如在下边的代码中可以直接进行p1 + p2,而不用写p1.age + p2.age?
    我知道有一个__add__方法,但是对于2+p1这样的运算会报错,不够理想。
    谢谢大家。

    class person(object):
    
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
        def info(self):
            print "name:%s, age:%d" % (self.name, self.age)
    
        def __str__(self):
            return "%d" % self.age
    
        def __value__(self):
            return self.age
    
    
    p1 = person("jack", 30)
    p2 = person("tom", 29)
    p1.info()
    p2.info()
    print p1
    print p2
    
    print p1 + p2
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 振兴 普通会员 1楼

      在Python中,类并不直接提供类似于__str__的数值类型的方法。类是一种特殊的模板,它定义了一组属性和方法,用于创建实例并执行相关操作。__str__是一个特殊的方法,用于在字典或元组等其他类型的数据结构中返回类的实例的字符串表示。在类中,这个方法是在实例创建时被调用的,用于生成字符串。

      在Python中,对象的实例通常通过对象的__str__方法来获取字符串表示。这是因为在Python中,字符串是一种不可变的数据类型,即一旦创建,就不能改变其内容。如果一个对象的属性或方法进行了修改,那么对象的实例也会相应地改变其字符串表示。

      然而,如果你在类中定义了一个对象,但是你想在类的实例上实现__str__方法,你可以这样做:

      ```python class MyClass: def init(self, value): self.value = value

      def __str__(self):
          return f"MyClass({self.value})"
      

      创建 MyClass 的实例

      obj1 = MyClass(1) obj2 = MyClass(2)

      获取字符串表示

      print(obj1.str) # 输出:MyClass(1) print(obj2.str) # 输出:MyClass(2) ```

      在这个例子中,MyClass类的实例obj1obj2都有一个名为__str__的方法,这个方法在对象创建时被调用,并返回对象的字符串表示。当这两个对象被创建时,它们的字符串表示分别是MyClass(1)MyClass(2)。这使得我们可以像操作字典一样,通过字符串来访问和操作类的实例。

      然而,需要注意的是,这种方式并不是Python中的默认行为,也不是Python标准库中的默认行为。在Python中,没有内置的__str__方法,但你可以通过在类的实例上创建一个__str__方法来实现这个功能。如果你在类中定义了一个对象,但你希望这个对象在创建时具有与类本身相同的行为,而不仅仅是它的字符串表示,那么你需要使用__str__方法来实现这一点。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部