请参阅下面的代码,您将了解我要实现的目标:
class Buchung(models.Model):
TIME_CHOICES = (
('Ganztag', 'Ganztag'),
('Halbtags vor 14', 'Halbtags vor 14'),
('Halbtags nach 14', 'Halbtags nach 14'),
)
cearted_on = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(Mitarbeiter, on_delete=models.CASCADE, default='')
raum = models.ForeignKey(Raum, on_delete=models.CASCADE, default='')
platz = models.ForeignKey(Platz, on_delete=models.CASCADE, default='')
time_choices = models.CharField(max_length=100, choices=TIME_CHOICES, default='Ganztag')
datum = models.DateField(("Datum"), default=datetime.date.today)
token = models.CharField(max_length=300, default='')
def __str__(self):
return "%s am %s" % (self.user, self.datum)
我没有得到任何输出。如果other_func的名字很有趣,它会在rails控制台上打印“我的名字”。从other_func调用时如何实现同样的目的?
编辑在我的Child课程中已经有了一个方法
class Parent
class_attribute :name
def self.fun
puts name
end
end
class Child < Parent
self.name = "my name"
def self.other_func
self.superclass.fun
# or Parent.fun
end
end
Child.other_func
在调用def self.fun
之前做了一些额外的工作。所以,从'other_func'直接调用'fun'对我来说不是一个选择。
答案 0 :(得分:3)
尽管成功调用了nil
,但您确实将Parent.fun
作为输出。
事情是class_attribute
不起作用,因为你期望它起作用。这将揭示这个问题:
class Parent
class_attribute :name
self.name = :super
def self.fun
puts "super: #{self.name}"
end
end
class Child < Parent
self.name = :child
def self.fun
puts 'child'
end
def self.other_fun
Parent.fun
end
end
Child.other_fun
#⇒ super: super
也就是说,类属性不是派生的。