打印对象名称

问题描述

我的 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.yearborn)

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

谢谢。

解决方法

没有

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

作为旁注,您应该对您的类使用 def __str__(self): 方法,该方法将返回您在“打印”对象时想要显示的字符串(而不是您的 display 方法)>

,

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

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"))