【问题标题】:Printing Object Names打印对象名称
【发布时间】:2021-05-08 18:20:40
【问题描述】:

我正在慢慢地开始我的 Python 之旅。我想问以下关于面向对象的问题。

问题 1)

我创建了一个名为 human 的类,它在实例化时需要属性性别、眼睛颜色、身高。

我创建了 2 个 x 方法,一个用于计算年龄,一个用于将所有对象属性打印到屏幕上。

from datetime import date
 
class human():
 
     
    def __init__(self, sex, eyecolor, height, yearborn):
        self.sex = sex
        self.eyecolor = eyecolor
        self.height = height
        self.yearborn = yearborn
         
        print(self.sex, self.eyecolor, self.height, self.yearborn)
         
         
    def age(self):
        currentdate = date.today()
        a = currentdate.year - self.yearborn
        return a
     
     
     
    def display(self):
        print(self.sex)
        print(self.eyecolor)
        print(self.height)
        print(self.yearborn)

当我创建一个对象时,我使用以下代码:-

import humanclass
Tom = humanclass.human("Male","Green", 173, 1994)

我得到以下输出:-

Male Green 173 1994

我的问题是,无论如何我可以在 def init 函数中包含对象的名称,以便当 python 使用代码打印出属性时:-

print(self.sex, self.eyecolor, self.height, self.yearborn)

在这种情况下,Tom 也会打印出用户调用对象名称的任何内容?

谢谢。

【问题讨论】:

  • 在 Python 中,repr 是一种特殊的方法,用于将类的对象表示为字符串。 ... 根据官方文档,repr 用于计算对象的“官方”字符串表示,通常用于调试
  • 这能回答你的问题吗? How can I get the name of an object in Python?

标签: python object names


【解决方案1】:

没有。

Tom 是一个变量名,与您的 human 对象无关,除了持有它的引用。 如果您想让对象知道它是 Tom,请为其添加 name(或类似的)输入。

附带说明,您应该在您的类中使用def __str__(self): 方法,该方法将在您“打印”您的对象时返回您想要显示的字符串(而不是您的display 方法)

【讨论】:

  • def __str__(self):?
【解决方案2】:

您可以创建字典。下面我提供了一个如何做到这一点的示例

class Shape:
    def __init__(self,sides):
        self.sides = sides
    def display(self,name):
        return self.sides,name
objs = {"square":Shape(4)}
print(objs["square"].display("squares"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多