Если я правильно понимаю, вы хотите все ожидающие транзакции.
Для этого начнем со списка дат. Тогда cross apply
или join
:
with dates as
select convert(date, '2019-01-01') as dte
union all
select dateadd(day, 1, dte)
from dates
where dte < '2019-02-28'
)
select t.customer, d.dte as tr_date, t.charge_date,
t.payment as expected_chart_amount
from dates d join
transactions t
on d.dte >= t.orig_date and
d.dte <= t.charge_date
where t.customer = 100400
order by d.dte, t.charge_date;
Повторно подчеркнуть точку который J.F. Sebastian сослался на, я хочу смочь отличить его, когда функция объявляется в классе (когда тип, который я получаю, является функцией и не связанным или несвязанным методом). т.е. где первый вызов к
get_info(__init__)
происходит я хотел бы смочь обнаружить, что это - метод, объявляемый как часть класса.Этот вопрос подошел, так как я помещаю декоратора вокруг этого, и это получает дескриптор к функции init, и я не могу на самом деле выяснить, объявляется ли метод в классе или как одинокая функция
Вы не можете. J.F. Ответ Sebastian на все еще 100% применим. Когда орган по определению класса выполняется, сам класс еще не существует. Операторы ( __init__
функциональное определение, и get_info(__init__)
звоните), происходят в новом локальном пространстве имен; в то время вызов к get_info
происходит, __init__
ссылка на функцию в том пространстве имен, которое неотличимо от функции, определяемой за пределами класса.
Можно различать два путем проверки типа:
>>> type(bar)
<type 'function'>
>>> type(Foo.__init__)
<type 'instancemethod'>
или
>>> import types
>>> isinstance(bar, types.FunctionType)
True
>>> isinstance(bar, types.UnboundMethodType)
True
который является путем, Вы выполнили бы в нем if
оператор.
Кроме того, можно получить класс от im_class
атрибут метода:
>>> Foo.__init__.im_class
__main__.Foo
В то время, когда Вы звоните get_info(__init__)
(в определении класса) __init__
обычная функция.
def get_info(function_or_method):
print function_or_method
class Foo(object):
def __init__(self):
pass
get_info(__init__) # function
def bar():
pass
get_info(Foo.__init__) # unbound method
get_info(Foo().__init__) # bound method
get_info(bar) # function
Вывод (CPython, IronPython):
<function __init__ at ...>
<unbound method Foo.__init__>
<bound method Foo.__init__ of <__main__.Foo object at ...>>
<function bar at ...>
Вывод (Jython):
<function __init__ 1>
<unbound method Foo.__init__>
<method Foo.__init__ of Foo instance 2>
<function bar 3>