В питоне есть 3 вида методов:
class Person():
species='homo_sapiens' # This is class variable
def __init__(self, name, age):
self.name = name # This is instance variable
self.age = age
def show(self):
print('Name: {}, age: {}.'.format(self.name, date.today().year - self.age))
@classmethod
def create_with_birth_year(cls, name, birth_year):
return cls(name, date.today().year - birth_year)
@classmethod
def print_species(cls):
print('species: {}'.format(cls.species))
@staticmethod
def get_birth_year(age):
return date.today().year - age
class Teacher(Person):
pass
[1118 ] 1) Метод экземпляра ( show ) нуждается в экземпляре и должен использовать self в качестве первого параметра. Он может получить доступ к экземпляру через self и повлиять на состояние экземпляра.
2) Метод класса ( create_with_birth_year и print_species ) не нуждается в экземпляре и использует cls для доступа к классу и влияния на состояние класса. Мы можем использовать @classmethod для создания фабрики, например:
navy = Person.create_with_birth_year('Navy Cheng', 1989)
navy.show()
и , эта фабрика может быть унаследована :
zhang = Teacher.create_with_birth_year('zhang', 1980)
print(type(zhang))
и метод класса может использоваться переменная класса доступа:
Person.print_species()
3) Статическому методу ( get_birth_year ) не требуется специальный параметр ( self или cls [ 1113]) и изменит любое состояние класса или экземпляра. Он может использовать некоторую вспомогательную функцию для класса.
$query = "SELECT volunteers_2009.id, volunteers_2009.comments, volunteers_2009.choice1, volunteers_2009.choice2, volunteers_2009.choice3, volunteers_2009.lname, volunteers_2009.fname, volunteers_2009.venue_id, venues.venue_name FROM volunteers_2009 AS volunteers_2009 LEFT OUTER JOIN venues ON (volunteers_2009.venue_id = venues.id) ORDER by $order $sort";
$res = mysql_query($query);
echo "<select name = 'venue'>";
while (($row = mysql_fetch_row($res)) != null)
{
echo "<option value = '{$row['venue_id']}'";
if ($selected_venue_id == $row['venue_id'])
echo "selected = 'selected'";
echo ">{$row['venue_name']}</option>";
}
echo "</select>";
:)
принятие Вас имеет массив мест проведения... лично мне не нравится смешивать sql с другим колдовством.
function displayDropDown($items, $name, $label, $default='') {
if (count($items)) {
echo '<select name="' . $name . '">';
echo '<option value="">' . $label . '</option>';
echo '<option value="">----------</option>';
foreach($items as $item) {
$selected = ($item['id'] == $default) ? ' selected="selected" : '';
echo <option value="' . $item['id'] . '"' . $selected . '>' . $item['name'] . '</option>';
}
echo '</select>';
} else {
echo 'There are no venues';
}
}