LINUX.ORG.RU

За вменяемые имена и пробелы между токенами - уже большой плюс. Что особо бросилось в глаза:

Plan = Planet(1,10,-10,"Myplanet :)",1000,23,45,23,234,235,243,234,23)

Magic numbers - зло, используйте именованные аргументы.

Hjorn
()

Лучше юзать new-style classes, а не old-style. Для этого, все классы должны наследоваться от object.

И да, пеп8 читать на ночь каждый день.

provaton ★★★★★
()
Ответ на: комментарий от provaton

Еще мне не совсем понятно, зачем в каждом классе было прописывать каждый атрибут по два раза, типа:

class Foo:
bar = 0
def __init__(self, bar):
self.bar = bar


Можно просто:

class Foo:
def __init__(self, bar=0):
self.bar = bar

provaton ★★★★★
()
Ответ на: комментарий от Hjorn

это просто заглушка, посмотреть как оно работает
такого есстественно не будет

nbdarvin
() автор топика
Ответ на: комментарий от isden

так в ините хочется инициализировать значением
а обьявил заранее, чтобы интерфейс класса сразу виден был
насколько я понял, в питоне незападло изпользовать несвойства а публичные переменные - члены?

nbdarvin
() автор топика
Ответ на: комментарий от nbdarvin

>в питоне незападло изпользовать несвойства а публичные переменные - члены?
ява головного мозга?

dimon555 ★★★★★
()
Ответ на: комментарий от isden

class Foo:

bar = 0

и

class Foo:

def __init__(...): self.bar = 0

разные вещи

chicane
()

>оцените, пожалуйста )

для начала наследуй классы от object, прочитай PEP 8...

инициализируй все переменные, которые относятся к объекту класса а не к классу внутри метода __init__, иначе получишь не то поведение, которое ты ожидаешь (класса - тоже объекты)

chicane
()
Ответ на: комментарий от volh

[code] >>> class A: pass ... >>> A.__bases__ () >>> class B(object): pass ... >>> B.__bases__ (<type 'object'>,) [/code]

Ни от чего и это называется old-style classes. Они deprecated и в python 3 по-умолчанию всегда (даже неявно) наследуются от object.

dccp
()
Ответ на: комментарий от volh

> а от чего же они наследуются, если не указать явно? о_О

Ни от чего. Ну так это известная питоновская лажа. Изначальная реализация классов была дурацкая, поэтому в питоне добавили new-style classes. Таким образом, в питоне 2.x есть два разных типа классов с разной семантикой. В питоне 3 старые классы выкинули, и теперь все классы по умолчанию наследуются от object.

Если интересно нормальное объяснение, смотри сюда: http://www.python.org/download/releases/2.2.3/descrintro/ Но предупреждаю, что об это можно реально сломать моск.

provaton ★★★★★
()
Ответ на: комментарий от provaton

ага, поняв.

>Если интересно нормальное объяснение, смотри сюда: http://www.python.org/download/releases/2.2.3/descrintro/ Но предупреждаю, что об это можно реально сломать моск.


"In the past, the subject of metaclasses in Python has caused hairs to raise and even brains to explode (see, for example Metaclasses in Python 1.5). Fortunately, in Python 2.2, metaclasses are more accessible and less dangerous. "

да уж, официальные доки в стиле Хичкока. ушел за попкорном )

volh ★★
()
Ответ на: комментарий от dccp

спасибо большое всем за ценные замечание, почитал пеп8, привел более менее в соответствие, мне конечно еще учиться и учиться - но с практикой умение и приходит )

скажите, вот так допустимо?

class Ship_Type(object):
"""Class for ship's type""""
def __init__(self, name, drive, attacks, weapons, \
shields, cargo, mass):
self.name = name
self.tech = Tech(drive, weapons, shields, cargo)
self.attacks = attacks
self.mass = mass


class Ship_Types(Set):
"""Simple class that realise set of Ship_Type"""
pass


т.е. потомок от Set, для удобства именованный, который будет содержать обьекты типа Ship_Type. Или нужно к нему контроль типов прикрутить? (ничего специфичного пока не требуется). Или вообще нет смысла использовать такие классы (а использовать просто обычные Set)?

nbdarvin
() автор топика

да, еще подскажите, правомерно ли так использовать именнованные константы (как enum в спп):



"""Enumerations: Please, fixme!"""
class enum_routes_cargo(object):
"""Enum for type of producing on planet"""
unknown=0
CAPITAL=1
RAW=2
COLONISTS=3
EMPTY=4


.....

class Route(object):
"""Class for user's route"""
def __init__(self, from_planet, to_planet, type=enum_routes_cargo.unknown):
"""from_planet and to_planet MUST be Planet type!"""
self.from_planet = from_planet
self.to_planet = to_planet
self.type = type


и есть ли какой то правильный способ контроля типов (вместо комментария """from_planet and to_planet MUST be Planet type!""" ))

nbdarvin
() автор топика
Ответ на: комментарий от nbdarvin

Если не знаешь английский, то пиши по-русски.

> контроль типов


Это не принято делать в Питоне.

> Ship_Type


Какой-то странный стиль обозначений. ShipType же.

Sphinx ★★☆☆
()
Ответ на: комментарий от nbdarvin

> какой то правильный способ контроля типов

isinstance(foo, expected_type)

Sphinx ★★☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.