Bad-Coder
@Bad-Coder
Шарю в питоне как лох ой бох ой бог!

Как вернуть Bool из конструктора?

Как вернуть Bool из конструктора?
main
# Exceptions.
from char_exceptions import *

# Class char.
class char:
    # Dict with char codes.
    char_codes = {
        # Main.
        'z': 2,
        'x': 4,
        'c': 8,
        'v': 16,
        'b': 32,
        'n': 64,
        'm': 128,
        'a': 256,
        's': 512,
        'd': 1024,
        'f': 2048,
        'g': 4096,
        'h': 8192,
        'j': 16384,
        'k': 32768,
        'l': 65536,
        'q': 131072,
        'w': 262144,
        'e': 524288,
        'r': 1048576,
        't': 2097152,
        'y': 4194304,
        'u': 8388608,
        'i': 16777216,
        'o': 33554432,
        'p': 67108864,
        '!': 134217728,
        '@': 268435456,
        '"': 536870912,
        '#': 1073741824,
        '№': 2147483648,
        '$': 4294967296,
        ';': 8589934592,
        '%': 17179869184,
        '^': 34359738368,
        ':': 68719476736,
        '&': 137438953472,
        '?': 274877906944,
        '*': 549755813888,
        '(': 1099511627776,
        ')': 2199023255552,
        '-': 4398046511104,
        '_': 8796093022208,
        '=': 17592186044416,
        '+': 35184372088832,
        '`': 70368744177664,
        '~': 140737488355328,
        ',': 281474976710656,
        '<': 562949953421312,
        '.': 1125899906842624,
        '>': 2251799813685248,
        '/': 4503599627370496,
        '[': 9007199254740992,
        '{': 18014398509481984,
        ']': 36028797018963968,
        '}': 72057594037927936,
        '\n': 144115188075855872,
        # Upper chars.
        'Z': 288230376151711744,
        'X': 576460752303423488,
        'C': 1152921504606846976,
        'V': 2305843009213693952,
        'B': 4611686018427387904,
        'N': 9223372036854775808,
        'M': 18446744073709551616,
        'A': 36893488147419103232,
        'S': 73786976294838206464,
        'D': 147573952589676412928,
        'F': 295147905179352825856,
        'G': 590295810358705651712,
        'H': 1180591620717411303424,
        'J': 2361183241434822606848,
        'K': 4722366482869645213696,
        'L': 9444732965739290427392,
        'Q': 18889465931478580854784,
        'W': 37778931862957161709568,
        'E': 75557863725914323419136,
        'R': 151115727451828646838272,
        'T': 302231454903657293676544,
        'Y': 604462909807314587353088,
        'U': 1208925819614629174706176,
        'I': 2417851639229258349412352,
        'O': 4835703278458516698824704,
        'P': 9671406556917033397649408,
        # Another chars.
        '|': 19342813113834066795298816,
        '\\': 38685626227668133590597632
    }
    # Constructor.
    def __init__(self, character):
        # If character from class int, float, complex, exception.
        if isinstance(character, int) or isinstance(character, float) or isinstance(character, complex):
            raise not_char_a_int_or_float_or_complex('Char must be char, not int, float, complex.')
        # If character letters is 1, and character not from int, float, complex, creating char.
        if len(character) == 1 and not isinstance(character, int) and not isinstance(character, float) and not isinstance(character, complex):
            self.character = character
        # If character lenght dont equals one, exception.
        elif len(character) != 1:
            raise char_have_too_many_letters('Char must have only one character.')
    # Get char.
    def __str__(self):
        return self.character
    # Upper char.
    def upper_char(self):
        return self.character.upper()
    # Lower char.
    def lower_char(self):
        return self.character.lower()
    # Get char code.
    def get_char_code(self):
        return self.char_codes[self.character]
    # Replace char.
    def replace_char(self, on_char):
        self.character = on_char
    # Delete char.
    def del_char(self):
        del self.character
    # Get char codes.
    def get_char_codes(self):
        return self.char_codes
    # Re-create char.
    def re_create(self, character):
        return char(character)
    def print_char(self):
        print(self.character)
    
# Convert to char.
class to_char(char):
    # Constructor.
    def __init__(self, obj):
        self.char = obj
    # Return converted.
    def __char__(self):
        return self.char[0]
# Is char.
class is_char:
    # Constructor.
    def __init__(self, obj):
        self.obj = obj
    # Return is char.
    def __str__(self):
        return str(isinstance(self.obj, char))
#def test(a: char):
#    if is_char(a) == 'True':
#        print(a)
#    elif is_char(a) == 'False':
#        print(0)
#
#test(str('Hello!'))
class a(bool):
    def __init__(self, bol):
        self.bol = bol
    def __bool__(self):
        return self.bol
print(a(True))

exceptions:
class char_error(Exception):
    def __init__(self, message): self.message = message
class char_have_too_many_letters(char_error): ...
class not_char_a_int_or_float_or_complex(char_error): ...


class a:
    def __init__(self, bol):
        self.bol = bol
    def __bool__(self):
        return self.bol
print(a(True))

Получаю
<__main__.a object at 0x000001EF7E6ACF70>
Как получить
True
?
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
@ScriptKiddo
class a:
    def __init__(self, bol):
        self.bol = bol

    def __str__(self):
        return f'{self.bol}'


print(a(True))


OUT

True

Process finished with exit code 0
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Vindicar
Погоди, так что ты хочешь?
Если ты хочешь, чтобы твой объект можно было преобразовать в логическое значение, объяви в нём метод __bool__().
def __bool__(self):
  return self.boolvalue


Если ты хочешь, чтобы после вызова твоего конструктора возвращался объект типа bool вместо экземпляра твоего класса, то это уже совсем другой вопрос. Тут нужно читать про __new__(), но я бы не использовал это без нужды.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы