Всего несколько других случайных идей для пользы полноты. Если они работают на Вас, используйте их. Иначе Вы - вероятно, более обеспеченная попытка чего-то еще.
Вы могли также сделать это со словарем:
>>> x = {'cond1' : 'val1', 'cond2' : 'val2'}
>>> y = {'cond1' : 'val1', 'cond2' : 'val2'}
>>> x == y
True
Эта опция более сложна, но можно также найти его полезным:
class Klass(object):
def __init__(self, some_vars):
#initialize conditions here
def __nonzero__(self):
return (self.cond1 == 'val1' and self.cond2 == 'val2' and
self.cond3 == 'val3' and self.cond4 == 'val4')
foo = Klass()
if foo:
print "foo is true!"
else:
print "foo is false!"
Dunno, если это работает на Вас, но это - другая опция рассмотреть. Вот еще один путь:
class Klass(object):
def __init__(self):
#initialize conditions here
def __eq__(self):
return (self.cond1 == 'val1' and self.cond2 == 'val2' and
self.cond3 == 'val3' and self.cond4 == 'val4')
x = Klass(some_values)
y = Klass(some_other_values)
if x == y:
print 'x == y'
else:
print 'x!=y'
последних двух, которые я не протестировал, но понятия, должно быть достаточно для получения Вас движение, если это - то, с чем Вы хотите пойти.
(И для записи, если это - просто одна вещь времени, Вы - вероятно, просто более обеспеченное использование методики, которую Вы представили сначала. При выполнении сравнения в большом количестве мест эти методы могут улучшить удобочитаемость достаточно, чтобы заставить Вас не чувствовать себя так плохо о том, что они - вид hacky.)
Скорее всего. Просто используйте приложение командной строки class-dump
, чтобы просмотреть частные заголовки. Обратите внимание, что ваше приложение будет отклонено из App Store для связи с частными фреймворками, если вы сделаете ссылку при компиляции. Достаточно легко увидеть, что вы связываете частные фреймворки, запустив otool
в вашем двоичном файле, если он связан при компиляции.