我的 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 还会打印出用户调用对象名称的任何内容?
谢谢。
答案 0 :(得分:1)
没有
Tom 是一个变量名,与您的 human
对象无关,只是持有对它的引用。
如果您希望对象知道它是 Tom,请为其添加 name
(或类似的)输入。
作为旁注,您应该对您的类使用 def __str__(self):
方法,该方法将返回您在“打印”对象时想要显示的字符串(而不是您的 display
方法)>
答案 1 :(得分:0)
您可以创建字典。下面我提供了一个如何做到这一点的例子
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"))