Хотя многие хорошие предложения были выдвинуты, ближе всего можно добраться до первоначально заявленного кода, то есть:
class ClassName(object):
def HocusPocus(name):
setattr(ClassName, name, property(fget=..., fset=...))
HocusPocus("blah")
HocusPocus("bleh")
это:
class ClassName(object):
def HocusPocus(name):
return property(fget=..., fset=...)
blah = HocusPocus("blah")
bleh = HocusPocus("bleh")
Я предполагаю, что таинственный ...
отредактированные части также нуждаются в доступе к name
(в противном случае нет необходимости передавать его в качестве аргумента).
Дело в том, что внутри корпуса класса HocusPocus по-прежнему остается лишь функцией (поскольку объект класса еще не существует до тех пор, пока тело класса не завершит выполнение, тело по существу похоже на тело функции, которое работает в его локальном dict [без оптимизаций пространства имен, обычно выполняемых компилятором Python в локалях реальной функции, но это упрощает семантику!]) и, в частности, может вызываться внутри этого тела, может возвращать значение, это значение может быть назначено (к локальной переменной тела класса, которая станет атрибутом класса в конце выполнения тела) и т. д.
Если вы не хотите ClassName.HocusPocus торчать позже, когда вы закончите выполнение его в теле класса просто добавить del
заявления (например, в качестве последнего оператора в теле класса):
del HocusPocus
Пожалуйста, разместите небольшой, полный пример, который показывает, что вы пытаетесь сделать. –