Использование класса в Python

1    char s[100];
2    s = "hello";

В примере Вы, если, s на самом деле инициализируется в строке 1, не строке 2. Даже при том, что Вы не присваивали ему значение явно в этой точке, компилятор сделал. В строке 2, Вы выполняете операцию присвоения, и Вы не можете присвоить один массив символов к другому массиву символов как это. Необходимо будет использовать strcpy () или некоторый цикл для присвоения каждого элемента массива.

7
задан John Saunders 8 December 2014 в 20:01
поделиться

5 ответов

Вот несколько простых указателей на удобство использования в вашей типографии . Эти вещи в основном решают проблемы удобочитаемости и доступности.

ДОЛЖНЫ: которые (должны) быть единственным способом изменить его свойства (внутренние переменные).

Обычно функции назывались trim_string (string) , тогда как с классом string вы можете выполнить string.trim () . Разница заметна в основном при создании больших сложных модулей, когда вам нужно сделать все возможное, чтобы минимизировать связь между отдельными компонентами.

Существуют и другие концепции, которые охватывают ООП, например наследование, но действительно важно знать, что что ООП заставляет вас думать об объектах , которые имеют операции и передачу сообщений (методы / глаголы), вы можете считать свой класс независимым от остальных. Когда происходит глобальное изменение, вы меняете Animal , когда это узкое изменение, вам просто нужно взглянуть на определение класса.

Для простого, последовательного и, возможно, одноразового кода можно используйте структурное программирование.

15
ответ дан 6 December 2019 в 08:15
поделиться

Вам не требуется для использования классов в Python - это не заставляет вас выполнять ООП . Если вам удобнее работать с функциональным стилем, ничего страшного. Я использую классы, когда хочу смоделировать некоторую абстракцию, которая имеет вариации, и я хочу моделировать эти вариации с помощью классов. Как подразумевает слово "класс", они полезны в основном тогда, когда вещи, с которыми вы работаете, естественным образом относятся к разным классам. Когда я просто манипулирую большими наборами данных, я не обнаружил общей необходимости следовать парадигме ООП только ради этого.

4
ответ дан 6 December 2019 в 08:15
поделиться

ООП хорошо подходит для сложных программ. Он отлично подходит для фиксации состояния и поведения концепций реального мира и организации взаимодействия между ними. Хороший объектно-ориентированный код легко читать / понимать, защищает целостность ваших данных и максимально увеличивает повторное использование кода. Я бы сказал, что повторное использование кода - одно из больших преимуществ хранения часто используемых вычислений в классе.

1
ответ дан 6 December 2019 в 08:15
поделиться

«но функции не содержатся в классе».

Они могли бы быть.

class Linear( object ):
    a= 2.
    b= 3.
    def calculate( self, somePoint ):
        somePoint['line']= b + somePoint['x']*a

class Exponential( object ):
    a = 1.05
    b = 3.2
    def calculate( self, somePoint ):
        somePoint['exp']= b * somePoint['x']**a

class Mapping( object ):
    def __init__( self ):
        self.funcs = ( Linear(), Exponential() )
    def apply( self, someData ):
        for row in someData:
            for f in self.funcs:
                f.calculate( row )

Теперь ваши вычисления заключены в классы. Вы можете использовать шаблоны проектирования, такие как Delegation , Composition и Command , чтобы упростить ваши скрипты.

1
ответ дан 6 December 2019 в 08:15
поделиться
  • Объектно-ориентированное программирование - не решение всех проблем программирования.

  • В Python функции являются объектами. Вы можете смешивать столько объектов и функций, сколько хотите.

  • Модули с функциями уже являются объектами со свойствами.

  • Если вы обнаружите, что передаете много одинаковых переменных вокруг - state - объект наверное лучше подходит. Если у вас много классов с методами класса или методы, которые не очень часто используют self , тогда функции, вероятно, лучше.

1
ответ дан 6 December 2019 в 08:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: