Перейти к содержимому

Def str self python что это

  • автор:

Класс self в Python

В этом уроке мы изучим использование self в Python. Это часто становится предметом споров среди экспертов и проблемой для новичков.

Python – это не язык, который создавался для парадигмы объектно-ориентированного программирования. Таким образом, создание статического метода в Python не является прямым. Посмотрим, как это делается:

class Person: def static_method(): print("This is a static method")

Теперь, чтобы создать метод, который может работать с реальным объектом «Person», нам нужно предоставить ему ссылку на этот объект. Итак, вместо передачи полного объекта Person в его собственный класс мы можем использовать self как:

class Person: def object_method(self): print("I can do something with self.")

Класс self в python

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

Самостоятельный конструктор

self также может использоваться для ссылки на поле переменной в классе:

class Person: # name made in constructor def __init__(self, n): self.name = n def get_person_name(self): return self.name

В приведенном выше фрагменте self относится к переменной имени всего класса Person. Обратите внимание: если у нас есть переменная в методе, self не будет работать. Эта переменная просто существует только во время выполнения этого метода и, следовательно, является локальной для этого метода. Для определения глобальных полей (переменных полного класса) нам нужно определить их ВНЕ методов класса. Обратитесь к области переменной python.

Пример использования self

self – ключевое слово?

self используется во многих местах в Python, поэтому люди думают, что это ключевое слово. Но в отличие от C ++ self не является ключевым словом.

Фактически мы можем использовать любое имя для первого параметра метода, но настоятельно рекомендуется придерживаться соглашения о его вызове самостоятельно.

Это означает, что последний класс можно сделать как:

class Person: #name made in constructor def __init__(another, n): another.name = n; def get_person_name(another): return another.name

Должны ли мы передать self методу?

Приведенное выше объяснение открывает новый вопрос, должны ли мы просто передать self методу? Давайте рассмотрим класс Person, который содержит метод, определенный как:

def something(another, arg1, arg2): pass

Если personMe является экземпляром класса и вызывается personMe.something (arg1, arg2), python внутренне преобразует его для нас как:

Person.something(personMe, arg1, arg2)

Переменная self относится к самому объекту.

Это все для self и его использования в конструкторе и функциях для получения текущей ссылки на объект.

How to return string representation of self in a class in Python?

I want to be able to return a string like: Apples and cinnamon by doing return self + » and » + thing, but I can’t.

Commented Nov 28, 2013 at 20:55
apples is not the string representation of self . Did you want to return self.thing instead?
Commented Nov 28, 2013 at 20:55

3 Answers 3

To ‘pretty print’ the object itself, define __str__ like so:

class Test(object): def __init__(self, thing): self.thing = thing def __str__(self): return self.thing >>> a=Test('apple') >>> print a apple 

If you want the representation to be custom, add __repr__ :

class Test(object): def __init__(self, thing): self.thing = thing def __repr__(self): return self.thing >>> Test('pear') pear 

If you want to create a string as stated in your edit, you can do this:

class Test(object): def __init__(self, thing): self.thing = thing def andthis(self, other): return '<> and <>'.format(self.thing, other) >>> apple=Test('apple') >>> apple.andthis('cinnamon') 'apple and cinnamon' >>> Test('apple').andthis('carrots') 'apple and carrots' 

Что такое def str self python и зачем это нужно?

def — это ключевое слово в языке программирования Python, которое используется для определения функций или методов. str — это встроенный класс в Python, который представляет строки. Когда мы пишем str() , мы создаем новый экземпляр этого класса. self — это параметр, используемый в методах классов в Python. Он ссылается на экземпляр класса, на котором вызывается метод. Python — это высокоуровневый язык программирования, который обладает простым и понятным синтаксисом. Он широко используется для разработки веб-приложений, обработки данных, создания сценариев и многих других задач. Что это — это вопрос о том, что означает указанное выражение. В данном случае, «def str self python что это» означает определение функции или метода с именем «str», принимающего параметр «self» и написанного на языке программирования Python. Пример использования:

def str(self): return "Пример строки"

В этом примере определена функция с именем «str», принимающая параметр «self». Она возвращает строку «Пример строки».

Детальный ответ

Что это: def str(self) в Python?

Оператор def str(self) в Python является частью магического метода __str__(), который используется для представления строкового представления объекта. Он определяет, как объект будет преобразовываться в строку, когда вызывается функция str() или при печати объекта. Метод __str__() может быть определен в пользовательских классах и обеспечивает пользовательский вывод для объектов этого класса в виде строк. Когда вы вызываете функцию str() для объекта класса, Python автоматически вызывает метод __str__() этого объекта, чтобы получить его строковое представление. Теперь давайте рассмотрим пример, чтобы лучше понять, как работает оператор def str(self):

class Person: def __init__(self, name, age): self.name = name self.age = age def __str__(self): return f"Person[name=, age=]" person = Person("John", 25) print(str(person))

В этом примере мы создали класс Person с атрибутами name и age, и определили метод __str__(), который возвращает строку, содержащую значения этих атрибутов. Затем мы создали объект person и вызвали функцию str() для этого объекта. Результатом будет строка, содержащая имя и возраст объекта person:

Person[name=John, age=25]

Как видите, оператор def str(self) в методе __str__() позволяет нам представить объект в виде строки с помощью пользовательского формата. Мы можем настроить строковое представление нашего объекта, чтобы отображать только нужные нам атрибуты или любую другую информацию, которую мы считаем важной. Это может быть полезно, когда мы хотим выводить объекты определенного класса в более понятном и информативном формате. Например, мы можем определить метод __str__() в классе, представляющем дерево, чтобы печатать его структуру или в классе, представляющем банковский счет, чтобы печатать информацию о счете. В заключение, оператор def str(self) в Python является частью магического метода __str__(), который позволяет нам определить пользовательское строковое представление объекта. Мы можем использовать этот метод, чтобы лучше контролировать, как объекты нашего класса выводятся в виде строк при вызове функции str() или при печати объекта. Это может быть полезно, когда мы хотим представить объект в более понятном и информативном формате.

Аннотация Self модуля typing в Python

Аннотация typing.Self (добавлена в Python 3.11.) предоставляет простой и интуитивно понятный способ аннотировать методы, которые возвращают экземпляр своего класса. Это похоже на подход на основе typing.TypeVar , но более лаконичный и простой для понимания.

Общие варианты использования включают альтернативные конструкторы, предоставляемые как методы класса, и методы __enter__() , которые возвращают self :

from typing import Self class MyLock: def __enter__(self) -> Self: self.lock() return self . class MyInt: @classmethod def fromhex(cls, s: str) -> Self: return cls(int(s, 16)) . 

Аннотацию typing.Self также можно использовать для аннотирования параметров метода или атрибутов того же типа, что и окружающий их класс.

Новое в версии 3.11.

Описание typing.Self .

Аннотация typing.Self — это специальный тип для представления текущего закрытого класса.

from typing import Self class Foo: def return_self(self) -> Self: . return self 

Эта аннотация семантически эквивалентна следующей, хотя и в более краткой форме:

from typing import TypeVar Self = TypeVar("Self", bound="Foo") class Foo: def return_self(self: Self) -> Self: . return self 

В общем, если что-то в коде следует шаблону:

class Foo: def return_self(self) -> "Foo": . return self 

Необходимо использовать typing.Self , так как вызовы SubclassOfFoo.return_self будут иметь Foo в качестве возвращаемого типа, а не SubclassOfFoo .

Другие распространенные варианты использования:

  • Аннотирование метода класса, которые используются в качестве альтернативных конструкторов и возвращают экземпляры параметра cls .
  • Аннотирование метода __enter__() , возвращающего self .
  • КРАТКИЙ ОБЗОР МАТЕРИАЛА.
  • Аннотация Any модуля typing
  • Аннотации Never и NoReturn модуля typing
  • Тип аннотации TypeAlias модуля typing
  • Аннотация LiteralString модуля typing
  • Аннотация Self модуля typing
  • Аннотации Required и NotRequired модуля typing
  • Тип аннотации Union модуля typing
  • Тип аннотации Optional модуля typing
  • Тип аннотации Tuple() модуля typing
  • Тип аннотации Callable() модуля typing
  • Тип аннотации Concatenate модуля typing
  • Класс ParamSpec модуля typing
  • Тип аннотации TypeGuard модуля typing
  • Класс Type() модуля typing
  • Тип аннотации Literal модуля typing
  • Тип аннотации ClassVar модуля typing
  • Тип аннотации Final() модуля typing
  • Тип аннотации Annotated модуля typing
  • Тип аннотации Generic модуля typing
  • Тип аннотации TypeVar модуля typing
  • Аннотация TypeVarTuple модуля typing
  • Тип аннотации Unpack модуля typing
  • Тип аннотации AnyStr модуля typing
  • Тип аннотации Protocol() модуля typing
  • Декоратор @runtime_checkable модуля typing
  • Тип аннотации NamedTuple модуля typing
  • Класс NewType модуля typing
  • Тип аннотации TypedDict() модуля typing
  • Типы аннотаций коллекций модуля typing
  • Аннотация абстрактных базовых классов
  • Функции и декораторы модуля typing
  • Помощники самоанализа модуля typing
  • ParamSpecArgs и ParamSpecKwargs модуля typing
  • Класс TypeAliasType модуля typing

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *